大家好,我有一个相当简单的问题。
我想知道这之间有什么区别
SELECT *
FROM TABLE
WHERE A = 'xxx'
AND (B = 'xxx' OR C='xxx' OR D='xxx')
而这个查询
SELECT *
FROM TABLE
WHERE A = 'xxx'
AND B = 'xxx'
OR C='xxx'
OR D='xxx'
在底部查询中,它将返回 2 个结果,而顶部查询将返回零个结果。
大家好,我有一个相当简单的问题。
我想知道这之间有什么区别
SELECT *
FROM TABLE
WHERE A = 'xxx'
AND (B = 'xxx' OR C='xxx' OR D='xxx')
而这个查询
SELECT *
FROM TABLE
WHERE A = 'xxx'
AND B = 'xxx'
OR C='xxx'
OR D='xxx'
在底部查询中,它将返回 2 个结果,而顶部查询将返回零个结果。
A = 'xxx' AND B = 'xxx' OR C='xxx' OR D='xxx'
相当于
(A = 'xxx' AND B = 'xxx') OR (C='xxx') OR (D='xxx')
感谢运营商的优先顺序
这个
SELECT * FROM TABLE
WHERE A = 'xxx' AND (B = 'xxx' OR C='xxx' OR D='xxx')
相当于这个
SELECT * FROM TABLE
WHERE A = 'xxx' AND B = 'xxx' OR
A = 'xxx' AND C = 'xxx' OR
A = 'xxx' AND D = 'xxx'
您放入 WHERE 子句的逻辑遵循布尔表达式的规则。就像代数表达式一样,有一个顺序操作。一般来说,顺序是