+-
MySQL语句中使用OR的确如何与/不用括号有什么不同?
我有这个问题:

SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02' 
    AND `status` = 'active' OR `status` = 'past due'

哪个没有返回正确的结果.但是,在OR条件周围添加括号使其工作如下:

SELECT * FROM (`users`) WHERE `date_next_payment` <= '2011-02-02'
    AND (`status` = 'active' OR `status` = 'past due')

我的问题是它为什么不同?据我所知,在没有括号的情况下,OR语句会有所不同;但我不明白它是如何不同的.

我没有找到任何对此有帮助的文档.如果那里有任何链接,我真的很感激.

最佳答案
这是因为OR比AND低 operator precedence.每当DB看到类似的表达式时

A AND B OR C

首先评估AND,即它等同于

(A AND B) OR C

所以,如果你明确想要

A AND (B OR C)

相反,你必须放入括号.

这不是特定于SQL的.这些运算符的优先顺序在我所知的所有编程语言中都是相同的(即至少是C,C,C#,Java和Unix shell脚本).

点击查看更多相关文章

转载注明原文:MySQL语句中使用OR的确如何与/不用括号有什么不同? - 乐贴网