我已经想到了很多,但从未找到答案。我已经找到了自己的情况,我不知道如何评估SQL查询的where子句中的条件。可以肯定的是,我总是使用括号使其更具可读性,并且易于理解。我认为有时使用括号来增加可读性是好的做法,即使可能不需要它。
考虑以下查询
SELECT *
FROM mytable
WHERE name='Anton'
AND lastname='Gildebrand'
OR age > 18
AND country='Sweden'
我想这个查询实际上等于
SELECT *
FROM mytable
WHERE name='Anton'
AND (lastname='Gildebrand' OR (age > 18 AND country='Sweden'))
这是对的吗?或者如何评估条件? 它与不同的数据库引擎有什么不同吗?
答案 0 :(得分:8)
SELECT * FROM mytable
WHERE name='Anton' AND lastname='Gildebrand' OR age > 18 AND country='Sweden'
等于:
SELECT * FROM mytable
WHERE (name='Anton' AND lastname='Gildebrand') OR (age > 18 AND country='Sweden')
答案 1 :(得分:3)
如果您正在谈论and
和or
,那么在没有括号and
的情况下,首先会对其进行评估。与数学中的*
和+
相同。
这些规则不依赖于SQL实现。