Chinaunix首页 | 论坛 | 博客
  • 博客访问: 684043
  • 博文数量: 41
  • 博客积分: 5070
  • 博客等级: 大校
  • 技术积分: 1265
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-02 13:12
文章分类

全部博文(41)

文章存档

2013年(8)

2011年(2)

2009年(9)

2008年(22)

我的朋友

分类: Oracle

2008-04-23 16:38:40

oracle 删除重复数据的几种方法

create table test_0210(id number,name varchar2(32),age number);

?s+dK x/t8PM,y0insert into test_0210 values(1,'abc',32);ITPUB个人空间I HW\y)`@%e+?[A]3|
insert into test_0210 values(2,'def',33);
*QG _$e'^s0insert into test_0210 values(3,'def',45);ITPUB个人空间f T2rN ?kI@\D
commit;

SQL> select * from test_0210;
/gRO'y@b0 ITPUB个人空间*y {!`x`1g a?:w
        ID NAME                                    AGEITPUB个人空间&s%tBVm6{QyB
---------- -------------------------------- ----------ITPUB个人空间he"tcY2{J!|
         1 abc                                      32ITPUB个人空间.a"Z9v1G{#m+C
         2 def                                      33ITPUB个人空间 [A/Y2r?
         3 def                                      45
.BNg)`:v/r%rb4O'}0 
]Aj-C#U~Ot:bc01.使用rowid 效率高 直接定位到数据块地址,根据需要取max rowid 或 min rowid 只适合删除少量重复数据

SQL> delete from test_0210 where rowid not in (select max(rowid) from test_0210 group by name);ITPUB个人空间x

阅读(2062) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~