我想從一個表插入一些數據到另一個,但我想阻止插入重複的行。我目前以下查詢:防止使用SQL Server 2008插入重複行
INSERT INTO Table1
(
Table1Col1,
Table1Col2,
Table1Col3,
Table1Col4,
Table1Col5
)
SELECT
Table2Col1,
Table2Col2 = constant1,
Table2Col3 = constant2,
Table2Col4 = constant3,
Table2Col5 = constant4
FROM Table2
WHERE
Condition1 = constant5
AND
Condition2 = constant6
AND
Condition3 = constant7
AND
Condition4 LIKE '%constant8%'
什麼我不知道的是,我試圖從表2插入到表1的行可能已經存在,我想,以防止發生這種可能的重複和跳過插入然後轉到插入下一個唯一的行。
我已經看到我可以使用WHERE NOT EXISTS子句和INTERSECT關鍵字的使用,但我沒有完全理解如何將它應用於我的特定查詢,因爲我只想使用Table2中的一些選定數據,然後將一些常量值插入到Table1中。
編輯:
我要補充一點TableCol2通過對TableCol5實際上並不存在於結果集中的列,我只是填充這些列一起Table2Col1返回的。
您可以在您的列上定義一個應該是唯一的'UNIQUE'約束 - 那麼沒有「重複」插入將工作(會導致錯誤代替) – 2012-08-16 10:47:54
重複行一個與table1中的行完全相同或列的子集定義唯一性? – 2012-08-16 12:16:02
@NikolaMarkovinović它是定義唯一性的Table1Col1,Table1Col2和TableCol3的子集。 – Aesir 2012-08-16 12:56:56