2010-07-26 55 views
0

我在SQL中創建了一個包含重複記錄的#temp表。從表中刪除#temp表中的記錄

我想從我的主表中刪除此臨時表中包含的所有記錄。我看到樣本做到這一點,但他們似乎都invovle選擇,我已經有我的選擇在臨時表中。

下面是它會是什麼樣子的僞代碼:

DELETE FROM MyMainTable(unique and duplicate records) WHERE the record exists in #temp 

回答

8
DELETE T 
FROM MyMainTable T 
INNER JOIN #temp ON T.id = #temp.id 

你也可以這樣做:

DELETE T 
FROM MyMainTable T 
WHERE EXISTS (SELECT * 
       FROM #temp 
       WHERE T.id = #temp.id) 
+0

謝謝你的幫助,這工作很好。 – user53885 2010-07-26 14:41:49

2

由於全球水平爲你的問題:

如果不是Temptable有主要的ID,原來有

Delete From Originaltable where primarykeyid in (select primarykeyid from temptable) 
+0

國際海事組織你通常會獲得更好的表現,使用帶'JOIN'的'EXISTS'而不是'IN' – 2010-07-26 14:40:09

+0

謝謝感謝您的幫助。 – user53885 2010-07-26 14:41:29