是否有一个SQL查询根据其他列的值更改条件?
我想执行以下查询
select colA,colB, colC
from TABLED
where colA > 10
and (if colC == A then colB = 'C' else colB = 'B')
如果这是有道理的,那么如果我们colC == A
select colA, colB, colC
from TABLED
where colA > 10 and colB = 'C'
否则我们会
select colA,colB,colC
from TABLED
where colA > 10 and colB = 'B'
答案 0 :(得分:1)
您可以使用条件逻辑来表达这一点。不需要case
:
select colA, colB, colC
from TABLED
where colA > 10 and
( (colC = A and colB = 'C') or
(colC <> A and colB = 'B')
);
这没有考虑到colC
可能是NULL
。如果需要的话,很容易将其合并到查询中。
答案 1 :(得分:-3)
如果您要基于条件计算值,可以使用 CASE WHEN :
SELECT
colA,
colB,
(CASE
WHEN CONDITION1 THEN VALUE1
WHEN CONDITION2 THEN VALUE2
...
ELSE VALUEN
END) AS colC
FROM table
WHERE colA > 10