如何删除MySQL中具有相同列值的行

时间:2014-04-30 10:56:56

标签: mysql sql

我有这样的事情:

col1 col2 col3
A      B   C
A      B   C

我希望只剩下一行,其他行要删除。要实现什么查询?

2 个答案:

答案 0 :(得分:2)

如果您要删除两个重复,请尝试以下操作:

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,这将不允许将来重复插入。

答案 1 :(得分:0)

你可以试试;

delete from table where col1 = 'A' and col2 = 'B' and col3 = 'C' limit 1;

您可以在限制子句中使用记录计数等来删除更多记录。