mysql学习--子查询

一、where型子查询
把内层查询的结果作为外层查询的比较条件

1、查询id最大的商品(最新的商品)
方法1:子查询,先查询最大的id,再根据id查询商品

select goods_name,cat_id,goods_id from goods where goods_id=(select max(goods_id) from  goods);

在这里插入图片描述
方法2:排序查商品

select goods_name,goods_id from goods order by goods_id desc limit 1;

在这里插入图片描述
2、查询每个栏目下id最大的商品信息

select goods_name goods_id,cat_id from goods where  goods_id in (select max(goods_id) from goods group by cat_id); 

在这里插入图片描述
注意:如果where 列=(内层sql),则内层sql返回的必是单行单列,单个值;如果where 列 in (内层sql),则内层sql返回单列,可以多行

二、from子查询
查询结果集可以当作表来看,对 查询结果集再次查询
from(内层sql),把内层sql当作临时表,再次查询

三、exist型子查询
把外层的sql结果拿到内层测试,如果内层sql成立,则取出该行

结合goods表和category表,把下面有商品的栏目取出来

select cat_id,cat_name from category where exists (select * from goods where goods.cat_id=category.cat_id);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值