中国教育在线 中国教育网 加入收藏 设为首页

oracle中常用的一些语句

http://itpx.eol.cn  来源:  作者:中国IT实验室  2010-05-27    

  如何查找、删除表中重复的记录

  方法原理:

  1、Oracle中,每一条记录都有一个rowid,rowid在整个数据库中是唯一的,

  rowid确定了每条记录是在ORACLE中的哪一个数据文件、块、行上。

  2、在重复的记录中,可能所有列的内容都相同,但rowid不会相同,所以只要确定出重复记录中

  那些具有最大rowid的就可以了,其余全部删除。

  实现方法:

  SQL> create table a (

  2 bm char(4), --编码

  3 mc varchar2(20) --名称

  4 )

  5 /

  表已建立.

  SQL> insert into a values('1111','1111');

  SQL> insert into a values('1112','1111');

  SQL> insert into a values('1113','1111');

  SQL> insert into a values('1114','1111');

  SQL> insert into a select * from a;

  插入4个记录.

  SQL> commit;

  完全提交.

  SQL> select rowid,bm,mc from a;

  ROWID BM MC

  ------------------ ---- -------

  000000D5.0000.0002 1111 1111

  000000D5.0001.0002 1112 1111

  000000D5.0002.0002 1113 1111

  000000D5.0003.0002 1114 1111

  000000D5.0004.0002 1111 1111

  000000D5.0005.0002 1112 1111

  000000D5.0006.0002 1113 1111

  000000D5.0007.0002 1114 1111

  查询到8记录.

  查出重复记录

  SQL> select rowid,bm,mc from a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

  ROWID BM MC

  ------------------ ---- --------------------

  000000D5.0000.0002 1111 1111

  000000D5.0001.0002 1112 1111

  000000D5.0002.0002 1113 1111

  000000D5.0003.0002 1114 1111

  删除重复记录

  SQL> delete from a a where a.rowid!=(select max(rowid) from a b where a.bm=b.bm and a.mc=b.mc);

  删除4个记录.

  SQL> select rowid,bm,mc from a;

  ROWID BM MC

  ------------------ ---- --------------------

  000000D5.0004.0002 1111 1111

  000000D5.0005.0002 1112 1111

  000000D5.0006.0002 1113 1111

  000000D5.0007.0002 1114 1111

推荐给好友    我要收藏    我要纠错    分享到

免责声明:

① 凡本站注明“稿件来源:中国教育在线”的所有文字、图片和音视频稿件,版权均属本网所有,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。已经本站协议授权的媒体、网站,在下载使用时必须注明“稿件来源:中国教育在线”,违者本站将依法追究责任。

② 本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。

内容推荐
eol.cn简介 | 联系方式 | 网站声明 | 京ICP证140769号 | 京ICP备12045350号 | 京公网安备 11010802020236号
版权所有 北京中教双元科技集团有限公司 EOL Corporation
Mail to: webmaster@eol.cn