首页 > sql语句的查询问题

sql语句的查询问题

DECLARE @A INT;
SET @A = 0;
SELECT * FROM dbo.Table WHERE (a IN (1,2) AND a= @A) OR a= @A

我希望改成
传入a = 0的时候,查询a in (1,2)
传入a = 1的时候,查询a = 1
传入a = 2的时候,查询a = 2
请问能否实现。


其实很简单,提问的时候已经接近写对了……

DECLARE @A INT;
SET @A = 0;
SELECT * FROM dbo.Table WHERE (a IN (1,2) AND @A = 0) OR a = @A

当然是可以的:

SET @A = 0;
SELECT * FROM dbo.Table WHERE IF(@A!=0, a=@A, a IN (1,2));

不过并不建议将此类判断交给数据库执行,最好是通过PHP、JAVA构造好了之后,直接让数据库给出结果(效率考虑)。

【热门文章】
【热门文章】