gpt4 book ai didi

MySQL - WHERE 子句中的多个等效项

转载 作者:行者123 更新时间:2023-11-29 04:39:54 24 4
gpt4 key购买 nike

我想知道 MySQL 中以下两个 WHERE 子句是否有区别:

WHERE a.Id = b.Id = c.Id

对比

WHERE a.Id = b.Id and b.Id = c.Id

我在以下 SQLFiddle 中得到这两个查询的不同结果:http://sqlfiddle.com/#!2/725396/3

最佳答案

根据 MySQL doco for an expression ,您的表达式 a = b = c 使用以下形式的 boolean_primary:

comparison_operator: = | >= | > | <= | < | <> | !=
boolean_primary:
boolean_primary comparison_operator predicate

因此等同于:

(a = b) = c

这意味着您将从 a = b 得到一个真实值,然后将那个c进行比较.

在 MySQL 中,boolean 类型是 equivalent to tinyint(1) ,其中 0 为假,其他均为真。因此,它只是一个可以与另一个值进行比较的整数值。

此外,比较表达式的结果如a = b will always return 0 表示 false,1 表示 true,如果任何输入为 NULL,则为 NULL。

因此,要使表达式 a = b = c 为真,它们都不允许为 NULL,并且必须满足以下条件之一:

  • a等于bc等于1;或
  • a 不等于 bc 等于 0

这几乎肯定不是你想要的,正确的形式是第二种。

关于MySQL - WHERE 子句中的多个等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063132/

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