我想使用临时表进行内连接,但仅当另一个变量不是NULL时?例如,我有一个用户表,我传入一个字符串,其中userid由分号分隔。我将此读入临时表,并对用户表进行内连接,但前提是userid的字符串不为空。否则我想返回所有用户行。
存储过程传入了一个变量:
@UidList varchar(max),
这是一串用户ID,以分号分隔。 这变成了临时表
DECLARE @List TABLE (UserUid uniqueidentifier NOT NULL)
然后另一个函数将字符串传递给表
IF @UidList IS NOT NULL
INSERT INTO @List(UserUid)
SELECT ItemUid
FROM dbo.AFN_ConvertUidListToTable(@UidList)
然后我加入用户表
select * from users
...
inner join @List on users.userid = @List.UserUid`
但是如果传入的字符串@UidList为null,那么我想匹配users表中的所有行。
答案 0 :(得分:1)
declare @tmp table (id int)
--insert into @tmp values (1)
Select * from a
where
(
ID in (Select ID from @tmp)
or
(Select Count(ID) from @tmp)=0
)
答案 1 :(得分:0)
当然这只是查看userids字符串和分支的一种情况吗?
IF @UserIds IS NULL
select * from users
ELSE
'stuff involving tempdb
答案 2 :(得分:0)
DECLARE @UserCount INTEGER
SELECT @UserCount = COUNT(1) FROM #UserIDList
IF @UserCount > 0
BEGIN
SELECT UserTable.* FROM UserTable JOIN #UserIDList ON UserTable.ID = #UserIDList.ID
END
ELSE
BEGIN
SELECT UserTable.* FROM UserTable
END
答案 3 :(得分:0)
如果@UidList IS NULL:
,左连接将从users表中获取所有记录SELECT users.*
FROM users
LEFT JOIN @List
ON @List.UserUid = users.userid
WHERE @List.UserUid IS NOT NULL
OR @UidList IS NULL
但是如果@UidList不是NULL,那么我们正在寻找匹配。