我有一个if else语句,在任一条件中都返回多个值或多行:
下面的代码就是我只返回1个值。
if @ifExist = 'TRUE'
begin
(SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail]
FROM MYTABLE
WHERE SOMEForigenID = SomeID)
end
ELSE
begin (SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail]
FROM MYTABLE
WHERE SOMEForigenID = SomeOtherID)
end
我不知道如何实现这一点,所以我可以让它返回第一个选择语句或第二个。
感谢任何帮助。
由于
答案 0 :(得分:3)
如果CASE
的结果值超过两个,则@ifExist
语句会有所帮助。
SELECT [ID],[PersonFirstName],[PersonLastName],[PersonEmail]
FROM MYTABLE
WHERE SOMEForigenID = CASE @ifExist WHEN 'TRUE' THEN 1 ELSE 2 END
具有多个值的示例:
WHERE SOMEForigenID = CASE @ifExist
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'Z' THEN 26
ELSE -1
END
如果只有两个可能的值,您也可以使用IIF
WHERE SOMEForigenID = IIF(@ifExist, 1, 2) -- @ifExist is a BIT
或
WHERE SOMEForigenID = IIF(@ifExist = 'TRUE', 1, 2) -- @ifExist as char