我有一个表,我需要正确的语句来删除重复的记录。我想通过删除表中的行来实现这一点,其中多个列值等于同一个表中其他记录的行。我可以做简单delete from [table] where [col] = [val]
,但我不知道如何做到这一点。你能提供一个我可以使用的模板吗?
感谢。
答案 0 :(得分:1)
delete from [table]
where [col] not in
(
select * from
(
select min([col])
from [table]
group by [col]
having count(distinct [val]) <> count([val])
) x
)
如果您从MySQL中删除的表中进行选择,那么您必须使用子查询来隐藏它。这就是我使用select * from (...) x
答案 1 :(得分:0)
假设原始密钥的ID是7
,
DELETE FROM [table] WHERE [col1] = [val1] AND [col2] = [val2] .... AND [id] != 7;