我有一张没有任何唯一键或主键的表。它有50列,任何或所有这些列都可以重复。如何删除所有重复的行但保留第一个?
答案 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 .....)