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= @A) OR a= @A
我希望改成
传入a = 0的时候,查询a in (1,2)
传入a = 1的时候,查询a = 1
传入a = 2的时候,查询a = 2
请问能否实现。
当然是可以的:
SET @A = 0;
SELECT * FROM dbo.Table WHERE IF(@A!=0, a=@A, a IN (1,2));
不过并不建议将此类判断交给数据库执行,最好是通过PHP、JAVA构造好了之后,直接让数据库给出结果(效率考虑)。
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1 回答922 阅读✓ 已解决
其实很简单,提问的时候已经接近写对了……