从表中删除重复的行

时间:2012-10-31 14:27:37

标签: mysql phpmyadmin

  

可能重复:
  Remove duplicate rows in MySQL

我想在一个巨大的表中创建一个关于单个属性的唯一索引,但是有重复的值,所以我需要删除两个单一性。只能删除重复记录。 phpmyadmin或mysql查询中最好的解决方案是什么?

我想出的唯一解决方案是选择另一个表,但我更愿意删除原始表中的数据。

表格如下(我想在id上添加唯一索引)

|id|...
+--+---
| 1|x
| 2|a   <-- duplicity
| 2|b   <-- duplicity
| 3|c
| 4|d

这将是最好的结果

|id|...
+--+---
| 1|x
| 2|a
| 3|c
| 4|d

这也是可接受的结果

|id|...
+--+---
| 1|x
| 3|c
| 4|d

3 个答案:

答案 0 :(得分:4)

ALTER IGNORE TABLE my_table ADD UNIQUE INDEX (id);

答案 1 :(得分:1)

DELETE  a 
FROM    tableName a
        LEFT JOIN
            (
                SELECT id, min(colName) x
                FROM tableName
                GROUP BY id
            ) c
        ON a.id = c.id AND
            a.colName = c.x
WHERE c.id IS NULL;

答案 2 :(得分:1)

DELETE FROM table 
WHERE id IN 
   (SELECT id FROM table, (SELECT id, count(*) dNum FROM table GROUP BY id) x 
     WHERE id = x.id      
   ORDER BY id DESC LIMIT dNum-1)