如何在没有主键的情况下删除所有重复的行?

时间:2014-02-11 15:44:32

标签: mysql sql duplicate-removal delete-row

我有一张没有任何唯一键或主键的表。它有50列,任何或所有这些列都可以重复。如何删除所有重复的行但保留第一个?

2 个答案:

答案 0 :(得分:4)

通用SQL方法是存储数据,截断表并重新插入数据。语法因数据库而有所不同,但这是一个例子:

create table TempTable as
    select distinct * from MyTable;

truncate table MyTable;

insert into MyTable
    select * from TempTable;

还有其他方法不需要临时表,但它们更依赖于数据库。

答案 1 :(得分:1)

如果您使用的是mysql数据库,请使用以下命令

ALTER IGNORE TABLE tablename ADD UNIQUE INDEX(field1,field2,field3 ...)  这样即使重复条目也可以通过添加唯一索引来删除重复项(因此使用了IGNORE关键字)

如果您使用的是Oracle数据库,请使用以下命令

从不存在rowid的tablename中删除(从table1 group中选择min(rowid)by row1,row2,row3 .....)