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

5

我有一个包含以下内容的表格项:

name
------
alpha
alpha 
beta
charlie
charlie

在这种情况下,我应该如何删除重复的行,但是应该保留一条记录。上述表格没有任何主键。
2个回答

3

试试这个

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

1
重新创建那个表格:
RENAME TABLE `testTable` TO `testTable2`;

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

或者在你的字段上添加唯一索引

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

谢谢,但我不想应用唯一索引。我只想执行查询以删除重复行。 - sureyn
@sureyn:但如果你不应用唯一键,你会再次遇到同样的问题。最好预防这种情况,而不是不断地清理。 - user330315
@a_horse_with_no_name:你说得没错,但我的问题只是想执行删除查询以除去重复的行,除了一条记录。顺便说一句,我的问题已经解决了,非常感谢你的帮助。 - sureyn
如果我们有更多的列呢? - Ali Hashemi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接