对以下问题的任何解释:

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/

10-15 06:34