我想在表格的某些字段上运行查询,但我不明白该怎么做。我的条件是首先需要检查 col1 的值,如果是'W',那么我需要检查 colA 的值是否为''1',' 2'),如果它不是'W',那么我需要检查 colB 的值是否为('1','2')。 这种检查条件('1','2')同样适用于colA和colB,只是取决于col1的值。
我尝试过使用它,但显然这是不正确的。
SELECT * FROM tbl
WHERE CASE WHEN col1= 'W' THEN (colA IN ('1','2')) ELSE (colB IN ('1','2')) END
那么如何在不使用Unions等的情况下在单个查询中执行此操作。
答案 0 :(得分:3)
您不需要CASE
,只需将所有布尔逻辑放在一个表达式中。
SELECT *
FROM T
WHERE
(Col1 = 'W' AND ColA IN ('1', '2'))
OR
(Col1 <> 'W' AND ColB IN ('1', '2'))
;
答案 1 :(得分:1)