我正在尝试解决的问题:where语句,其中查询检查条件1是否为A或B WHILE条件2不是C,D在同一行中。
WHERE Condition1 LIKE 'A' OR Condition1 LIKE 'B' AND "Condition2" <> 'C' AND "Condition2" <> 'D'
这是否接近?非常感谢!
答案 0 :(得分:2)
您走在正确的轨道上,但您错过了AND
的优先级高于OR
的事实。
我能想到的最优雅的方式来表达你想要的条件如下:
SELECT *
FROM some_table
WHERE c1 IN ('A', 'B') AND c2 NOT IN ('C', 'D');
答案 1 :(得分:2)
您应该将子表达式分组在括号中,否则您可能会围绕组合在一起的模糊性冒险:
WHERE
(Condition1 = 'A' OR Condition1 = 'B')
AND
(Condition2 <> 'C' AND Condition2 <> 'D')
在这种情况下,确实需要围绕第二部分的括号,但是永远不会同时结合AND
和{{1}在同一个子表达式中。
原始构造可能存在的问题是表达式可以这样分组:
OR