对以下问题的任何解释:
Select x FROM y WHERE a = 1 OR a = 2 AND (b = 1 OR b = 2)
为什么它在返回正确信息时不返回正确信息:
Select x FROM y WHERE (a = 1 OR a = 2) AND (b = 1 OR b = 2)
我是不是丢了什么东西?
X Y (X OR Y) X OR Y
1 0 1 1
0 1 1 1
1 1 1 1
0 0 0 0
我知道在优先级方面,()具有优先级,但为什么要将它们添加到查询的第一部分?
如果我错了就纠正我
谢谢你
最佳答案
AND
的优先级高于OR
,因此您的第一个查询等效于:
Select x FROM y WHERE a = 1 OR a = 3 OR (a = 2 AND (b = 1 OR b = 2))
不等于
Select x FROM y WHERE (a = 1 OR a = 2 OR a = 3) AND (b = 1 OR b = 2)
我猜你忘了第一个问题中的
a = 3
部分。Operator precedence in MySQL
关于mysql - Mysql优先逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7152022/