SQL 删除多个条件重复记录
SQL delete multiple criteria duplicate records
我有一个 table,除了一个字段(ex 为 col4)外,所有字段都有重复记录。我只需要删除 t1.col4 字段为空的重复条目。
ID Col1 Col2 Col3 Col4
1 Joe 1 2 Yes
2 Sue 1 2
3 Joe 2 3
4 Joe 1 2
目标:只删除 ID 4
我已经尝试了内部连接(我认为 msaccess 不允许这样做)和 WHERE EXISTS/IN 技术,但有错误。
现有技术删除 t1.col4 为空的所有记录(不仅仅是子查询中匹配的记录):
DELETE t1.*
FROM t1
WHERE Exists (
SELECT t1.col1, t1.col2, t1.col3
FROM t1
Group by t1.col1, t1.col2, t1.col3
HAVING Count(*) > 1
)
AND t1.col4 Is Null;
我已经尝试了多次迭代的内部连接技术,但我在这里阅读的所有内容都表明它在 Access 中不受支持。如果有帮助,我很高兴 post 我尝试过的方法。我还尝试将子查询写入 temptable,然后尝试删除与内部联接匹配的记录。
您需要一个相关子查询:
DELETE t1
FROM t1
WHERE EXISTS (SELECT t1.col1, t1.col2, t1.col3
FROM t1 as tt1
WHERE t1.col1 = tt1.col1 AND t1.col2 = tt1.col2 AND t1.col3 = tt1.col3 AND t1.id <> tt1.id
) AND
t1.col4 Is Null;
我有一个 table,除了一个字段(ex 为 col4)外,所有字段都有重复记录。我只需要删除 t1.col4 字段为空的重复条目。
ID Col1 Col2 Col3 Col4
1 Joe 1 2 Yes
2 Sue 1 2
3 Joe 2 3
4 Joe 1 2
目标:只删除 ID 4
我已经尝试了内部连接(我认为 msaccess 不允许这样做)和 WHERE EXISTS/IN 技术,但有错误。
现有技术删除 t1.col4 为空的所有记录(不仅仅是子查询中匹配的记录):
DELETE t1.*
FROM t1
WHERE Exists (
SELECT t1.col1, t1.col2, t1.col3
FROM t1
Group by t1.col1, t1.col2, t1.col3
HAVING Count(*) > 1
)
AND t1.col4 Is Null;
我已经尝试了多次迭代的内部连接技术,但我在这里阅读的所有内容都表明它在 Access 中不受支持。如果有帮助,我很高兴 post 我尝试过的方法。我还尝试将子查询写入 temptable,然后尝试删除与内部联接匹配的记录。
您需要一个相关子查询:
DELETE t1
FROM t1
WHERE EXISTS (SELECT t1.col1, t1.col2, t1.col3
FROM t1 as tt1
WHERE t1.col1 = tt1.col1 AND t1.col2 = tt1.col2 AND t1.col3 = tt1.col3 AND t1.id <> tt1.id
) AND
t1.col4 Is Null;