oracle 去除表中重复记录

zhaoyang0405 2009-03-04 12:51:53


去除表中重复记录,根据多个字段,不是所有字段,怎么办?
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2009-03-04
  • 打赏
  • 举报
回复
上面是查找出了重复的记录
然后删除,假设id为主键

delete tb
where id in(
select id
from
(select t.*,row_number() orver(partition by col1,col2,col3...) rn from tb)
where rn>1 );
commit;
Andy__Huang 2009-03-04
  • 打赏
  • 举报
回复
select *
from
(select t.*,row_number() orver(partition by col1,col2,col3...) rn from tb)
where rn>1

其中col1,col2,col3...为重复的字段


fuyou001 2009-03-04
  • 打赏
  • 举报
回复
select *
from
(select t.*,row_number() orver(partition by col1,col2,col3...) rn from tb)
where rn=1 --只取一条

其中col1,col2,col3...为重复的字段
fuyou001 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdhai9451 的回复:]
select *
from
(select t.*,row_number() orver(partition by col1,col2,col3...) rn from tb)
where rn>1

其中col1,col2,col3...为重复的字段
[/Quote]
顶这个
zcs_1 2009-03-04
  • 打赏
  • 举报
回复
如下,表TAB01
create table tab01(a int, b int, c int);
INSERT INTO tab01 values(1,1,0);
INSERT INTO tab01 values(1,1,1);
INSERT INTO tab01 values(1,1,2);
INSERT INTO tab01 values(1,2,0);
INSERT INTO tab01 values(1,2,1);
INSERT INTO tab01 values(1,2,2);
commit;

a b c
1 1 0
1 1 1
1 1 2
1 2 0
1 2 1
1 2 2

去掉后最后是
a b c
1 1 0
1 2 0


SQL为:
DELETE FROM tab01
WHERE rowid IN
(SELECT rowid FROM
(
SELECT rowid, a, b, c, row_number() over(partition by a, b order by rowid) rn FROM tab01
)
WHERE rn > 1
);
zhaoyang0405 2009-03-04
  • 打赏
  • 举报
回复
我想的是不让他显示,类似与distinct

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧