数据库查询语句--子查询
子查询就是在查询语句中插入查询语句形成条件要什么,子查询就写什么
语法:
select 列名 from 表名 where 列名 in (select子查询语句); 或者 select 列名 from 表名 where 列名 = (select子查询语句);
比如我们要查询一个学生表中各个专业的第一名的学生的信息,我们要先知道每个专业的最高分,在根据最高分查询学生的信息,每个专业的最高分就是子查询,也就是条件。
例如:在下表中列出每个学院最高分的学生的信息
1.先得出各学院分数最高的是多少
select dept,max(score) fs from s1 group by dept
2.再把表中的列简化
select ss.fs from (select dept,max(score) fs from s1 group by dept) ss
3.列出分数等于最高分的学生的信息
select * from s1 where score in (select ss.fs from (select dept,max(score) fs from s1 group by dept) ss);
注:如果出现说明你把子查询结果当表进行查询时忘记添加别名了,只要添加别名就可以了。
我们也常用子查询统计信息,比如用当前表统计优秀(>90),良好(>=80),及格(>=60)和补考的学生人数时就可以通过子查询统计出
-- 学生成绩划分等级 优秀,良好,及格,补考 -- 子查询 select ss.level ,count(1)from (select id,name,score,if(score>90,优秀,if(score>=80,良好,if(score>=60,及格,补考))) level from s1 ) ss group by ss.level;
下一篇:
OSCAR神通数据库建表及插数据