【发布时间】:2016-03-12 13:14:17
【问题描述】:
我知道建议使用括号分隔 and ,or 语句。但我想知道 mysql 引擎如何在没有括号的情况下呈现语句。让我们说我们有这个语句:
select * from users where A and B or C and D;
括号会怎样?
【问题讨论】:
-
Operator Precedence 首先是
AND,然后是OR。与代数相同A*B + C*D
我知道建议使用括号分隔 and ,or 语句。但我想知道 mysql 引擎如何在没有括号的情况下呈现语句。让我们说我们有这个语句:
select * from users where A and B or C and D;
括号会怎样?
【问题讨论】:
AND,然后是OR。与代数相同A*B + C*D
AND 的优先级高于 OR。
select * from users where (A and B) or (C and D);
参考:http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html
【讨论】:
就像在数学表达式中:
AND is like a PRODUCT
OR is like a SUM
所以 AND 在 OR 之前执行,除非用括号表示不同,就像在数学中一样。
【讨论】:
【讨论】: