2012-05-11 57 views
1

我有我创建了一个临时表:如何比较记录到表中,并插入到现有的临时表中?

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”。

,这其中就有我的问题。

如果我这样做: SELECT COUNT从员工A(A.UId) ,#tempIDS乙 其中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)) 

帮助?

回答

0

您可以将IsUser列默认为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

+0

@Conrad感谢渔获 – Gratzy

+0

感谢康拉德! 当我输入以下内容时,出现以下错误: 操作数类型冲突:uniqueidentifier与int 不兼容 请问您可以告诉我这是什么意思? 我也尝试: 更新#tempIDS SET IsUser = CASE WHEN COALESCE(计数(UList.StaffId),0)= 0 THEN ELSE 0 1 END FROM #tempIDS LEFT OUTER JOIN UList上#tempIDS.Id = UList.StaffId 但得到这个: 聚合可能不会出现在UPDATE语句的集合列表中。 –

+0

@Giselle W我在set语句中将ID更改为IsUser – Gratzy

相关问题