我有两个结构相同的大表(4+ 百万条记录),它们有大约 300k 重复行。我要 DELETE
使用 DELETE IN
的重复行句法。
我已经使用 MERGE
完成了它声明(仅适用于 2008 或更新版本,因此我无法使用它,因为我仍在运行 2005)和 DELETE EXISTS
,但我在获取 DELETE IN
时遇到了一些麻烦上类。
我遇到的问题 DELETE IN
是我的大表有一个复合主键,这意味着我只能将所有这些列一起使用来识别唯一的行。
在 T-SQL 中是否可以将多个表达式作为 IN
的参数?条款?就像是:
DELETE FROM MyBigTable
WHERE ([Column1], [Column2], [Column3]) IN
(SELECT [Column1],
[Column2],
[Column3]
FROM MyBigTable
INTERSECT
SELECT [Column1],
[Column2],
[Column3]
FROM MyOtherBigTable)
最佳答案
你可以做一个 JOIN
为了这:
DELETE A
FROM MyBigTable A
INNER JOIN MyOtherBigTable B
ON A.Column1 = B.Column1 AND A.Column2 = B.Column2 AND A.Column3 = B.Column3
关于sql - 带有 IN 的多个表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9669031/