数据库查询语句--子查询

子查询就是在查询语句中插入查询语句形成条件要什么,子查询就写什么

语法:

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;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值