如果我想在多对多表中插入多行,我可以使用这种方式:
INSERT INTO dbo.MyTable (IDTable1, IDTable2)
SELECT IDTable1, IDTable2
FROM (
VALUES
(1,2),
(1,3),
(2,4),
(4,5),
(5,7)
) AS source(IDTable1, IDTable2)
WHERE NOT EXISTS(
SELECT *
FROM dbo.MyTable as TARGET
WHERE target.IDTable1 = source.IDTable1
AND target.IDTable2 = source.IDTable2
);
现在我的问题是是否有某种方法可以通过一个查询删除许多行。例如,如果我想删除 (1,3)、(4,5) 和 (5,7)。
我想这将是相同的,但不是使用 where not exists,而是以这种方式:
DELETE FROM dbo.MyTable (IDTable1, IDTable2)
SELECT IDTable1, IDTable2
FROM (
VALUES
(1,2),
(1,3),
(2,4),
(4,5),
(5,7)
) AS source(IDTable1, IDTable2)
WHERE EXISTS(
SELECT *
FROM dbo.MyTable as TARGET
WHERE target.IDTable1 = source.IDTable1
AND target.IDTable2 = source.IDTable2
);
我应该在存在的地方使用。但我想知道它是否正确。