尋找一個SQL查詢來執行以下操作之間存在:的table1
x
列SQL INSERT是否存在刪除如果不是2個表
- 全部插入值
y
列table2
如果 它們不存在在表2 - 從
table2
列的刪除記錄,如果clumny
的值不會再在 的table1
x
列中存在
我試圖插入或忽略在SQL Server中,沒有運氣插入查詢2008 R2
尋找一個SQL查詢來執行以下操作之間存在:的table1
x
列SQL INSERT是否存在刪除如果不是2個表
y
列table2
如果 它們不存在在表2table2
列的刪除記錄,如果clumn y
的值不會再在 的table1
x
列中存在
我試圖插入或忽略在SQL Server中,沒有運氣插入查詢2008 R2
聽起來像是一個完美的適合SQL Server MERGE
;
MERGE table2 AS t2
USING table1 AS t1
ON (t2.y = t1.x)
WHEN NOT MATCHED BY TARGET
THEN INSERT (y) VALUES(t1.x)
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
這將插入你在表1,COLX,所有記錄到表2,科利:
INSERT INTO Table2 (ColY)
SELECT ColX
FROM Table1
WHERE ColX NOT IN (SELECT ColY FROM Table2)
你可以用」 t刪除列中的所有記錄。但是,你可以將它們設置爲NULL,或者如果你想刪除這些行,你也可以這樣做。請讓我們知道。
DELETE FROM Table2
WHERE ColY NOT IN (SELECT ColX From Table1)
OR
UPDATE Table2
SET ColY = NULL
WHERE ColY NOT IN (SELECT ColX From Table1)
好運。
可以使用Merge Statement
MERGE table2 AS t2
USING table1 AS t1
ON (t2.y = t1.x)
WHEN NOT MATCHED BY TARGET
THEN INSERT(y) VALUES(t1.x)
WHEN NOT MATCHED BY SOURCE
THEN DELETE
OUTPUT $action, inserted.*, deleted.*;