以下代码在Oracle数据库中测试通过
begin
for r in (select Name,Age,max(rowid) rowid_temp,count(*) cnt from demo
group by Name,Age having count(*)>1) loop
delete from demo where Name=r.Name and Age=r.Age
and rowid <> r.rowid_temp ;
commit;
end loop;
end;
如果是非Oracle数据库,请参照以上思路使用for循环来去重,由于没有rowid字段,请在表中增加一个自增序列,来标识相同行的不同,好确定删除哪一行。
温馨提示:内容为网友见解,仅供参考