mysql子查询

本文深入探讨了SQL中的子查询与从属查询,通过具体实例展示了如何利用子查询筛选数据和从属查询进行复杂查询。重点介绍了where型子查询用于查找特定条件的数据,from型子查询用于计算特定群体的统计信息,以及exists型子查询用于判断是否存在符合条件的数据。文章以实际应用场景为例,清晰地展示了每种查询类型的特点和使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql子查询

where型子查询

把内层查询结果当作外层查询的比较条件

-- 不用order by 来查询最新的商品
-- 取出每个栏目下最新的产品(goods_id唯一)
  select cat_id, goods_id,goods_name 
  from goods 
  where goods_id in(select max(goods_id) from goods group by cat_id);

from型子查询

--用子查询查出挂科两门及以上的同学的平均成绩
 思路:
 -- 先查出哪些同学挂科两门以上
 select name,count(*) as gk 
 from stu 
 where score < 60 having gk >=2;

 -- 以上查询结果,我们只要名字就可以了,所以再取一次名字
select name 
from (select name,count(*) as gk from stu having gk >=2) as t;

-- 找出这些同学了,那么再计算他们的平均分
select name,avg(score) 
from stu 
where name in (
    select name from (
        select name,count(*) as gk from stu having gk >=2
        ) as t
    ) 
group by name;

exists型子查询

把外层查询结果拿到内层,看内层的查询是否成立

 --查询哪些栏目下有商品,栏目表category,商品表goods
select cat_id,cat_name 
from category 
where exists(select * from goods where goods.cat_id = category.cat_id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值