将两个select语句组合到where子句中

时间:2015-12-06 15:02:24

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

我想将下面的两个select语句和if else语句合并到一个带有where子句中的条件表达式的select语句中。怎么可能实现?

@DefaultMemberID = 2

IF @DefaultMemberID IS NOT NULL THEN 
   SELECT * FROM MemberProfile
   WHERE MemberID = @DefaultMemberID OR MemberID = NULL
ELSE
   SELECT * FROM MemberProfile

如何将其组合成一个选择语句,如下所示:

SELECT * FROM MemberProfile
WHERE
  WHEN @DefaultMemberID IS NOT NULL THEN
  MemberID = @DefaultMemberID OR MemberID IS NULL
  ELSE do not take memberID into account when querying

2 个答案:

答案 0 :(得分:2)

这是组合查询的方法。

SELECT * FROM MemberProfile
   WHERE MemberID = @DefaultMemberID OR MemberID IS NULL OR @DefaultMemberID IS NULL
OPTION(RECOMPILE)

注意:您无法将NULL=运算符进行比较。您需要使用IS来检查是否存在NULL

答案 1 :(得分:1)

我知道你会很难相信这一点,但那只是

WHERE @DefaultMemberID is null 
   or MemberID = @DefaultMemberID 
   OR MemberID is NULL