我有2個sql表格,格式完全相同,1個用作臨時表,1個用作靜態表。如何比較2個表,刪除舊記錄並添加新記錄sql
目前我的代碼只是擦除靜態表並每次使用臨時表中的新數據填充它,但這不完全是我所需要的。我試圖創建一些類型的SQL比較比較這兩個表,然後將刪除不在臨時表中但在靜態表中的記錄,它會添加新的記錄在臨時表中但不是靜態表格。所以靜態表只是每次更新而不是被擦除和重寫。
所以,如果我的臨時表有:ABC1,ABC2,ABC4 和我的靜態表已:ABC1,ABC3,ABC4
我的SQL查詢在理想情況下返回:ABC1,ABC2,ABC4
我有2查詢似乎選擇我想要刪除的值和我想要添加的值,但我目前無法讓刪除一個正常工作,所以我想知道是否有什麼我從查詢中丟失。
這個查詢插入那就是在臨時表中的數據,而不是靜態的表格:
Insert into [static table]
SELECT *
FROM [temp table]
EXCEPT
SELECT *
FROM [static table]
該查詢應刪除的靜態表中的數據而不是臨時表:
delete from [static table]
where not exists
(SELECT *
FROM [static table]
EXCEPT
SELECT *
FROM [temp table])
任何人都可以提出什麼問題與我的查詢,或者如果有更好的方式來執行此任務?謝謝
你使用什麼風格的SQL? – AdaTheDev 2013-02-25 10:15:34
我正在使用sql server 2008 – RebeccaD 2013-02-25 10:20:03