我有这样的事情:
col1 col2 col3
A B C
A B C
我只希望其中一排保留,而另一排则被删除。要执行什么查询?
最佳答案
如果要删除两个重复项,请尝试以下操作:
DELETE m.*
FROM mytable m
INNER JOIN
(SELECT col1,
col2,
col3,
COUNT(*)
FROM mytable
GROUP BY col1,
col2,
col3
HAVING COUNT(*)>1
) t
ON m.col1 =t.col1
AND m.col2=t.col2
AND m.col3=t.col3
SQL Fiddle
编辑
编辑完问题并希望保留两个重复行中的一个后,可以通过以下行轻松实现此目的:
ALTER IGNORE TABLE mytable ADD UNIQUE INDEX idx_yourindexname (col1, col2, col3);
这将删除所有重复的行,以便仅保留唯一的行。强制使用IGNORE关键字,因为您已经有数据违反了表中的INDEX。 Movereover,这将不允许将来重复插入。
关于mysql - 如何在MySQL中删除具有相同列值的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23386246/