如何重写此SQL语句以执行我需要的操作?
SELECT * FROM TABLE
WHERE COLUMN_NAME_1 IN (CASE
WHEN COLUMN_NAME_2 = 'X' THEN 'A'
WHEN COLUMN_NAME_2 = 'Y' THEN 'B', 'C' END)
显然我不能从CASE子句中返回多个值...那么我怎么能写这个呢?我很确定今天我很慢,因为这看起来很容易......
答案 0 :(得分:3)
SELECT * FROM Table WHERE
(COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A') OR
(COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C'))
或
SELECT * FROM Table WHERE COLUMN_NAME_2 = 'X' AND COLUMN_NAME_1 = 'A'
UNION ALL
SELECT * FROM Table WHERE COLUMN_NAME_2 = 'Y' AND COLUMN_NAME_1 IN ('B', 'C')
这假设您仅想要在COLUMN_NAME_2中使用X或Y的结果。如果您想要其他行,则无法分辨原始SQL中的哪些行。