SQL use CASE statement in WHERE IN clause

前端 未结 7 1465
南方客
南方客 2020-12-06 00:17

Is it posible to use case in where in clause? Something like this:

 DECLARE @Status VARCHAR(50);
 SET @Status=\'published\';

 SELECT * FRO         


        
7条回答
  •  不思量自难忘°
    2020-12-06 00:25

    No you can't use case and in like this. But you can do

    SELECT * FROM Product P    
    WHERE @Status='published' and P.Status IN (1,3)
    or @Status='standby' and P.Status IN  (2,5,9,6)
    or @Status='deleted' and P.Status IN (4,5,8,10)
    or P.Status IN (1,3)
    

    BTW you can reduce that to

    SELECT * FROM Product P    
    WHERE @Status='standby' and P.Status IN (2,5,9,6)
    or @Status='deleted' and P.Status IN (4,5,8,10)
    or P.Status IN (1,3)
    

    since or P.Status IN (1,3) gives you also all records of @Status='published' and P.Status IN (1,3)

提交回复
热议问题