嗯,我觉得很简单的问题,但我找不到满意的答案。 这两个查询有区别吗?这两个查询有区别吗?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
在此先感谢
嗯,我觉得很简单的问题,但我找不到满意的答案。 这两个查询有区别吗?这两个查询有区别吗?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
在此先感谢
现在有没有区别在您的查询。
如果在查询中添加了AND
条件,则会有差异。
e.g
SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x'
和
SELECT * FROM table WHERE id=1 AND (column1 = 'x' OR column2 = 'x')
SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x'
将相当于
SELECT * FROM table WHERE (id=1 AND column1 = 'x') OR column2 = 'x'
明白了,谢谢! – Crinsane
没有,有没有一个单一的差别。
查看更多MySQL语法here。
号其相同。只要有两个条件大括号没有太大意义。
而且我上面的评论,the manual解释说:
一些由MySQL执行的优化遵循:
去除不必要的括号:
((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a AND b AND c) OR (a AND b AND c AND d)
所以不,没有任何区别。
不,没有。 – eggyal
没有,但你应该习惯把OR条件放在圆括号里,因为AND具有比OR->'x和(y或z)更高的优先级。 –