如何将记录与表进行比较,并插入到现有的临时表中?

时间:2012-05-11 17:03:21

标签: sql sql-server

我创建了一个临时表:

CREATE TABLE #tempIDS (
Name varchar(108),
Id uniqueidentifier,
IsUser bit )

我填充了它:

INSERT INTO #tempIDS (Name, Id)
SELECT UName, UId FROM UList
WHERE UName LIKE 'smi%'
ORDER BY UName

所以我现在要做的是检查临时表中的记录与另一个表是否存在。如果他们在另一张桌子上,那么我想把一个“1”,如果没有,则为“0”。

这就是我的问题所在。

如果我这样做: 选择计数(A.UId) 来自员工A,#tempIDS B. 其中A.UId ='480FA1E3-1A4B-4D3B-AB21-5070ADF974EB'

我可以得到“1”或“0”。

但是如何根据记录是否存在于比较表中来选择并在我的临时表中插入“1”或“0”? 这不起作用:

update #tempIDS
set IsUser = (select COUNT(StaffId) FROM Staff
where StaffId= (select Id from #tempIDS))

帮助?

2 个答案:

答案 0 :(得分:2)

 UPDATE #tempIDS
 SET IsUser= CASE WHEN COALESCE(staff.staffid,0) = 0  THEN 0 ELSE 1 END
 FROM #tempIDS
 LEFT OUTER JOIN staff ON #tempIDS.id = staff.staffid

很抱歉,您似乎想要更新IsUser我正在更新ID

答案 1 :(得分:0)

您可以将IsUser列默认为0,然后您只需更新找到匹配的人员ID的行。