删除没有主键的表中的重复行

时间:2013-01-16 11:55:53

标签: mysql distinct duplicate-removal

我有一个包含

等项目的表项
name
------
alpha
alpha 
beta
charlie
charlie

在这种情况下,如何删除重复的行,但应保留一条记录。上表没有任何主键。

2 个答案:

答案 0 :(得分:3)

试试这个

DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0

答案 1 :(得分:1)

重新创建该表:

RENAME TABLE `testTable` TO `testTable2`;

CREATE TABLE `testTable` 
SELECT DISTINCT `name` FROM `testTable2`;

在您的字段上添加 UNIQUE INDEX

ALTER IGNORE TABLE `tableName` 
    ADD UNIQUE INDEX (`name`)