我有这样的事情:

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/

10-13 23:28