次のことを行うSQLクエリを探しています。
- table2に存在しない場合は、の列のすべての値をの列に挿入
x
しますtable1
y
table2
table2
clumnの値がの列にy
もう存在しない場合は、列からレコードを削除しますx
table1
SQL Server2008R2で挿入クエリを挿入または無視しようとしましたがうまくいきませんでした
次のことを行うSQLクエリを探しています。
x
しますtable1
y
table2
table2
clumnの値がの列にy
もう存在しない場合は、列からレコードを削除しますx
table1
SQL Server2008R2で挿入クエリを挿入または無視しようとしましたがうまくいきませんでした
SQLServerに最適のように聞こえます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;
これにより、Table1、colXのすべてのレコードがTable2、colYに挿入されます。
INSERT INTO Table2 (ColY)
SELECT ColX
FROM Table1
WHERE ColX NOT IN (SELECT ColY FROM Table2)
列内のすべてのレコードを削除することはできません。ただし、これらをNULLに設定することも、行を削除する場合はそれを行うこともできます。お知らせください。
DELETE FROM Table2
WHERE ColY NOT IN (SELECT ColX From Table1)
また
UPDATE Table2
SET ColY = NULL
WHERE ColY NOT IN (SELECT ColX From Table1)
幸運を。
マージステートメントを使用できます
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.*;