具有多个值的情况

use*_*567 0 sql sql-server

假设我有这个问题,

SELECT T.A FROM T WHERE T.A IN (CASE WHEN T.B = 1 THEN (1,2,3) ELSE (4,5) END)
Run Code Online (Sandbox Code Playgroud)

是否可以或任何替代此查询.

小智 5

不要在where子句上使用case

SELECT T.A FROM T WHERE (T.A IN (1,2,3) And T.B = 1) or (T.A in (4,5) and T.B <>1) 
Run Code Online (Sandbox Code Playgroud)