好吧,我认为这个问题很简单,但我找不到令人满意的答案。这两个查询有区别吗?
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 运算符还有一个条件时,括号的作用将很有用。否则执行计划除了语法没有区别。
除了我上面的评论之外,手册还解释了:
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)
所以不,没有任何区别。
现在您的查询没有区别。
AND
如果您的查询中存在添加条件,则会有所不同。
例如
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'
不,没有任何区别。
在此处查看更多 MySQL 语法。
不,它是一样的。只要只有两个条件,大括号就没有多大意义。