我有以下查询:查询改善where子句
DECLARE @MyTable TABLE
(
[ID] INT ,
[Col1] INT ,
[Col2] INT
)
INSERT INTO @MyTable
SELECT 1 ,
2 ,
1
UNION
SELECT 1 ,
2 ,
3
UNION
SELECT 2 ,
2 ,
3
UNION
SELECT 2 ,
2 ,
3
UNION
SELECT 3 ,
2 ,
3
UNION
SELECT 3 ,
2 ,
1
DECLARE @ID INT
SET @ID = 1
SELECT *
FROM @MyTable
WHERE (Col1 = (CASE WHEN [ID] = @ID THEN 2
END)
OR [Col2] = (CASE WHEN [ID] != @ID THEN 1
END)
)
WHEN [ID] = @ID我想与恒定值相匹配Col1中等于2,并且当[ID] = @ID欲!以恒定值相匹配col2的等于1,可上面的查询可以改进,使[ID]平等检查可以一次在上面的查询做了,这样的事情:
SELECT *
FROM @MyTable
WHERE
if([ID] = @ID)
Col1=2
ELSE
[Col2]=1