为什么“ SELECT ... WHERE id = 1 = 0”会返回除id = 1以外的所有行?

时间:2019-01-23 12:24:28

标签: mysql sql

为什么执行以下查询:

SELECT * FROM myTable WHERE id=1=0

返回myTable中的所有行,但其中有id=1的行除外?

myTable内容:

+----+-------+
| id | value |
+----+-------+
| 1  | dog   |
| 2  | cat   |
| 3  | parrot|
+----+-------+

现在运行:SELECT * FROM myTable WHERE id=1=0

输出:

+----+-------+
| id | value |
+----+-------+
| 2  | cat   |
| 3  | parrot|
+----+-------+

2 个答案:

答案 0 :(得分:9)

原因是该逻辑应被评估为:

WHERE (id = 1) = 0

这等效于:

WHERE (id = 1) "is false"

或者:

WHERE id <> 1

尝试运行以下示例:

select 1=1=0, 1=2=3, 1=1=0

答案 1 :(得分:7)

默认运算符优先级的工作方式如下:

WHERE (ID=1)=0

id=1情况下为假的