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

Mysql 删除没有主键的表中的重复行,mysql,distinct,duplicate-removal,Mysql,Distinct,Duplicate Removal,我有一个表项,其中包含如下项 name ------ alpha alpha beta charlie charlie 在这种情况下,如何删除重复的行,但应保留一条记录。上表没有任何主键。请尝试此操作 DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0 重新创建该表: RENAME TABLE `testTable` TO

我有一个表项,其中包含如下项

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

请尝试此操作

DELETE FROM item WHERE GREATEST(0,@num := IF(NAME = @NAME, @num + 1, 0),LEAST(0, LENGTH(@NAME := NAME)))>0
重新创建该表:

RENAME TABLE `testTable` TO `testTable2`;

CREATE TABLE `testTable` 
SELECT DISTINCT `name` FROM `testTable2`;
在您的字段中添加唯一索引

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

谢谢,但我不想应用唯一索引。我只想执行应该删除重复行的查询。@sureyn:但如果不应用唯一键,您将再次遇到同样的问题。最好是防止这种情况发生,而不是不断地清理。@a_horse_with_no_name:你是对的,但我关心的是执行delete查询以删除除一条记录之外的重复行。顺便说一句,我的问题已经解决,非常感谢你的帮助。如果我们有更多的专栏呢?