Oracle找出表中某几个字段数据相同的记录

create table student(id number primary key,name varchar2(20),gender varchar2(2));

创建表student,包含两个主要字段name 和gender.

插入几条数据。

        ID NAME                GENDER                                             
---------- -------------------- --                                             
        1 张三                男                                             
        2 李四                男                                             
        3 李四                男                                             
        4 李四                女                                             
        5 张三                女                                             
        6 张三                男     

可以看到id(1,6)的name和gender相同,id(2,3)的name和gender也相同。

现在提个需求:列出name和gender都相同的记录。写sql

SQL> SELECT s.name,s.gender
  2  FROM student s
  3  WHERE ((SELECT COUNT(*)
  4            FROM student
  5            WHERE name = s.name and gender = s.gender) > 1)
  6  ORDER BY name,gender DESC;

NAME                GE                                                       
-------------------- --                                                       
李四                男                                                       
李四                男                                                       
张三                男                                                       
张三                男   

本题目思路是连表查询,在where子句中使用子查询,分离出两个字段作为筛选条件,而后直接得出所有记录。

相关推荐