我面临的情况是,我需要一个WHERE子句来执行不同的操作,我不知道如何解决。
SELECT ...
FROM ...
WHERE
(
CASE @test
WHEN 0
THEN
pid = inPID
WHEN 1
THEN
id = inPID
@test := 0 <- syntax error
END
)
我试着定义一些@test变量(由procedure参数初始化),如果用TEST = 1调用过程,我只需要id = inPID一次。这可能吗?
答案 0 :(得分:1)
尝试这样做
@test = @test - 1
-- this just to be @test is 0 , if you have other value change it be 0
修改强>
试试这个
(
CASE @test
WHEN 0
THEN
pid = inPID
WHEN 1
THEN
id = inPID
WHEN 1
THEN
@test := 0
END
或使用此
WHEN 1
THEN
id = inPID AND @test := 0
答案 1 :(得分:1)
你可以尝试一下吗?最好是你可以向我们展示整个查询语句。在CASE THEN
中,您可以在SQL Server中使用AND
,OR
,无论如何都要测试它。: -
SELECT ...
FROM ...
WHERE
(
CASE WHEN @test = 0 THEN pid = inPID
WHEN @test= 1 THEN id = inPID AND @test:=0
END
)