mysql子查询

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);
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值