如果else语句,SQL子查询返回多个值

时间:2013-06-26 14:35:55

标签: sql sql-server sql-server-2008 tsql

我有一个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

我不知道如何实现这一点,所以我可以让它返回第一个选择语句或第二个。

感谢任何帮助。

由于

1 个答案:

答案 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