假设,我有一列“Rate”,并且必须根据以下标准获取行。CHARS 下面只是列。
- 如果 X>Y 则获取 Rate
- 如果 A>B 那么
- 如果 C>D 则获取 Rate
- 如果 E>F 那么
- 如果 G>H 则获取 Rate
- 如果 I>J 则获取 Rate
- 如果 K>L 则
- if M>N THEN 获取率
我被困在,如何在 WHERE 子句中编写多级条件。
假设,我有一列“Rate”,并且必须根据以下标准获取行。CHARS 下面只是列。
我被困在,如何在 WHERE 子句中编写多级条件。
我完全不确定我是否得到了正确的结果,但听起来你只是想在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
更高的优先级。
要将条件解析为 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)))