需求
一个表中可能有N条记录,如何显示重复的记录?
SQL> create tablet1 (
2 id number,
3 namevarchar2(20)
4 );
Table created.
SQL> insert intot1 values(1, '张云');
1 row created.
SQL> insert intot1 values(2, '叶英才');
1 row created.
SQL> insert intot1 values(3, '单立国');
1 row created.
SQL> insert intot1 values(4, '闫亚宁');
1 row created.
SQL> insert intot1 values(5, '姚凤鸣');
1 row created.
SQL> insert intot1 values(6, '巫立成');
1 row created.
SQL> insert intot1 values(7, '张云');
1 row created.
SQL> insert intot1 values(8, '巫立成');
1 row created.
SQL> insert intot1 values(9, '叶英才');
1 row created.
SQL> commit;
Commit complete.
SQL> select *from t1;
ID NAME
---------- --------------------
1 张云
2 叶英才
3 单立国
4 闫亚宁
5 姚凤鸣
6 巫立成
7 张云
8 巫立成
9 叶英才
分析
首先,我们要先把姓名进行统计,将重复的姓名分组,找出重复的记录
SQL> select namefrom t1 group by name having count(name) > 1;
NAME
--------------------
巫立成
叶英才
张云
第二问
你这是找出了重复的,但是我怎么知道他是重复的呢,如果条数很多,你不可能直接看出来
SQL> select name,count(name) from t1 group by name having count(name) > 1;
(总数大于1,证明有重复)
NAME COUNT(NAME)
-------------------- -----------
巫立成 2
叶英才 2
张云 2
第三问
你这是统计了重复的记录,但是我怎么知道这些记录都是什么呢?
SQL> select id,name
2 from t1
3 where name in (select name from t1 group by name having count(name) >1)
4 order by name;
ID NAME
---------- --------------------
2 叶英才
9 叶英才
6 巫立成
8 巫立成
1 张云
7 张云