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子句中使用子查询,分离出两个字段作为筛选条件,而后直接得出所有记录。