寻找一个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.*;