让我们假设,我有一列'Rate',并且必须根据以下标准获取行。 CHARS下面只是列。
我陷入困境,如何在WHERE子句中编写多级条件。
答案 0 :(得分:4)
我完全不确定我是否已经得到了正确的结果,但听起来你只想在WHERE
子句中结合多个条件:
WHERE
X>Y OR
(
A>B AND
(
C>D OR
(
E>F AND
(
G>H OR
I>J OR
(K>L AND M>N)
)
)
)
)
并非所有括号都是严格必要的,但我通常更喜欢使用它们而不是记住AND
或OR
是否具有更高的优先级。
答案 1 :(得分:3)
要将条件解析为SQL,可以使用一组简单的两个规则:
所以生成的SQL就是这样的:
select Rate
from ...
where (X > Y) OR
(A > B) AND
((C > D) OR
(E > F) AND
((G > H) OR
(I > J) OR
(K > L) AND
(M > N)))