gpt4 book ai didi

sql - 哪里不影响。为什么?

转载 作者:行者123 更新时间:2023-11-29 04:13:09 26 4
gpt4 key购买 nike

我有一个 MySQL 查询看起来像这样:

SELECT
client.id, client.vorname, client.nachname, DATE_FORMAT(geburtsDatum, '%d.%m.%Y'), zahlung.zuUebBet, zahlung.betrag
FROM
zahlung JOIN client ON ( zahlung.mitgliedsNr = client.id )
WHERE
client.typ = 'U'
OR
client.typ is null
AND
zahlung.typ = 'Beitrag'
AND
anBGueberwiesen = '0000-00-00'
AND
zahlung.zuUebBet IS NOT NULL
AND
(
zahlung.vomBGeinheb = 0
OR
zahlung.vomBGeinheb is null
)

一切正常,但案例:

zahlung.zuUebBet IS NOT NULL

看起来被忽略了。 (我得到的行中有很多 NULL)

有人知道这是怎么回事吗?

最佳答案

请看the operator precedence of mysql . OR 的优先级低于 AND,因此您必须将其放在大括号中以获得所需的结果:

  client.typ = 'U'
OR
client.typ is null

完整的 WHERE block 应该是这样的:

  (
client.typ = 'U'
OR
client.typ is null
)
AND
zahlung.typ = 'Beitrag'
AND
anBGueberwiesen = '0000-00-00'
AND
zahlung.zuUebBet IS NOT NULL
AND
(
zahlung.vomBGeinheb = 0
OR
zahlung.vomBGeinheb is null
)

否则,sql 语句将像下面这样处理(我认为这不是您想要的)(我添加了大括号以明确说明):

  client.typ = 'U'
OR
(
client.typ is null
AND
zahlung.typ = 'Beitrag'
AND
anBGueberwiesen = '0000-00-00'
AND
zahlung.zuUebBet IS NOT NULL
AND
(
zahlung.vomBGeinheb = 0
OR
zahlung.vomBGeinheb is null
)
)

关于sql - 哪里不影响。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com