为了账号安全,请及时绑定邮箱和手机立即绑定

在Oracle中从表中删除重复行

/ 猿问

在Oracle中从表中删除重复行

幕布斯7119047 2019-10-13 12:08:28

在Oracle中从表中删除重复行

我正在Oracle中测试一些内容,并使用一些示例数据填充了一个表,但是在这个过程中,我意外地加载了重复记录,所以现在我无法使用其中的一些列创建主键。

如何删除所有重复行而只保留其中一个行?


查看完整描述

3 回答

?
慕哥9229398

使用rowid假瘤。

DELETE FROM your_tableWHERE rowid not in(SELECT MIN(rowid)FROM your_tableGROUP BY column1, column2, column3);

哪里column1column2,和column3为每个记录设置标识键。您可以列出所有的列。



查看完整回答
反对 回复 2019-10-14
?
幕布斯5086720
delete from t where rowid IN ( select rid                    from (select rowid rid, 
                                 row_number() over (partition by 
                         companyid, agentid, class , status, terminationdate                                  
                          order by rowid) rn                            from t)
                   where rn <> 1);

(修正了缺失的括号)



查看完整回答
反对 回复 2019-10-14
?
慕斯卡3215842

从…DevX.com:

DELETE FROM our_tableWHERE rowid not in(SELECT MIN(rowid)FROM our_tableGROUP BY column1, column2, column3...) ;

其中,列1、列2等是您想要使用的关键。


查看完整回答
反对 回复 2019-10-14

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信