oracle中如何删除一个表中的重复数据,如删除表a中字段b重复的数据.有3条重复删除两条保留一条

 我来答
roy_88
推荐于2016-05-10 · TA获得超过3696个赞
知道大有可为答主
回答量:2914
采纳率:100%
帮助的人:2724万
展开全部
有没有唯一列如果有的情况下

delete b from a as b where exists(select 1 from a where b=b.b and ID>b.ID)--保留最大
delete b from a as b where exists(select 1 from a where b=b.b and ID<b.ID)--保留最小

其它方法参照整理贴,多数方法都可在oracle通用

参考资料: http://blog.csdn.net/roy_88/article/details/2715965

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guojinhui10000
2012-07-17 · 超过24用户采纳过TA的回答
知道答主
回答量:284
采纳率:100%
帮助的人:81.5万
展开全部
(1).适用于有大量重复记录的情况(列上建有索引的时候,用以下语句效率会很高):
Delete empa Where empno In (Select empno From empa Group By empno Having Count(*) > 1)
And ROWID Not In (Select Min(ROWID) From empa Group By empno Having Count(*) > 1);

Delete empa Where ROWID Not In(Select Min(ROWID) From empa Group By empno);

(2).适用于有少量重复记录的情况(注意,对于有大量重复记录的情况,用以下语句效率会很低):
Delete empa a where rowid<>(select max(rowid) from empa where empno=a.empno
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Yigichul
2012-07-18 · 超过33用户采纳过TA的回答
知道答主
回答量:95
采纳率:100%
帮助的人:36.8万
展开全部
delete from a table1
where table1.rowid<(select max(table2.rowid) from a table2 where table1.b=table2.b);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxr_303
2012-07-18 · TA获得超过473个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:514万
展开全部
delete from a where rowid not in (select min(rowid) from a group by b)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式