ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 利用sql语句找出表中有重复记录的三种sql写法

利用sql语句找出表中有重复记录的三种sql写法

原创 Linux操作系统 作者:paulyibinyi 时间:2007-12-11 17:52:14 0 删除 编辑
create table test_0210(id number,name varchar2(32),age number);
insert into test_0210 values(1,'abc',32);
insert into test_0210 values(2,'def',33);
insert into test_0210 values(3,'def',45);
commit;

select * from test_0210;
SQL> select * from test_0210;

ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
2 def 33
3 def 45

第一种写法sql:
SQL> select a.*
2 from test_0210 a,test_0210 b
3 where a.id <> b.id and a.name = b.name ;

ID NAME AGE
---------- -------------------------------- ----------
3 def 45
2 def 33

第二种写法sql:
SQL> select a.* from test_0210 a,(select name,count(*) from test_0210 b group by name having count(*)>1) b
2 where a.name=b.name;

ID NAME AGE
---------- -------------------------------- ----------
2 def 33
3 def 45

第三种写法sql 利用分析函数
SQL> select id,name,age
2 from (select id,name,count(name) over(partition by name) as rn,age
3 from test_0210)
4 where rn > 1
5 ;

ID NAME AGE
---------- -------------------------------- ----------
2 def 33
3 def 45

SQL>

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7199859/viewspace-400/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
学习数据库

注册时间:2007-12-11

  • 博文量
    901
  • 访问量
    6805783