前面有and又有or的条件
前面有and又有in的条件
这两种情况结果完全不一样
-- 写法 A:AND 与 OR 混用
WHERE col1 = 'X' AND col2 = 'A' OR col2 = 'B'
-- 写法 B:AND 与 IN 混用
WHERE col1 = 'X' AND col2 IN ('A', 'B')
🎯 举个例子:
假设你写的是:
WHERE col1 = 'X' AND col2 = 'A' OR col2 = 'B' AND col3 = 'Y'
由于 AND 优先级高于 OR,Oracle 会把它解析成:
WHERE (col1 = 'X' AND col2 = 'A')
OR (col2 = 'B' AND col3 = 'Y')
⚠️ 可能不是你想要的!
很多人写这句话时,真实意图可能是:
满足 col1 = 'X' 和 col3 = 'Y',并且 col2 是 'A' 或 'B'
那就必须加括号:
WHERE col1 = 'X'
AND (col2 = 'A' OR col2 = 'B')
AND col3 = 'Y'
如果你能贴出原 SQL(或那张图),我可以逐字帮你确认括号该怎么加。