学习数据库笔记五

本文介绍了数据库查询中的子查询使用,包括where子查询和from子查询。通过实例展示了如何查询最新的商品信息以及每个栏目下的最新商品。同时讲解了如何将查询结果转化为临时表进行进一步操作,强调了利用子查询创建临时表的实用技巧。

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

where 型子查询

内层查询结果充当外层查询条件


1.查询最新的商品

   步骤a ) select max(goods_id) from goods;  这是一条动态的语句,怎么添加都会是最新的,它查出了最新的一列goods_id

   步骤b ) 查询最新的商品的整行信息,需要拿上面的语句作为条件

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

   步骤c ) 现在的结果就是"goods_id"为最新的那行的记录


*遇到问题要会分解,一步步做就能解出


2.查询出每个栏目下最新的商品

   步骤a ) select max(goods_id) from goods group by cat_id;  查出每个栏目下最新的商品ID

   步骤b ) 以上面查出的id为条件,接着查

                 select * from goods where goods_id in (select max(goods_id) from goods group by cat_id);    要用In,因为不只一个条件





from型子查询

查询出的结果集可以当成一张表来看

平时我们from后跟的都是一张表,from型子查询这种情况,可以把整个查询当成一张表

(通常我们查询出的结果只是在内存中的一个结果集,而非在硬盘上的内容,可以用having来查询出它)


一条查询语句,用括号括住,起个别名,它就成为一张“新”的临时表了,如

(select * from goods order by cat_id asc,goods_id desc)  as temp 这样就把查询结果变成了新的temp表  这个技巧很有用!


用这个临时表时,

select goods_id,cat_id,goods_name from (select * from goods order by cat_id asc,goods_id desc) as temp  group by cat_id;


临时表只需要在你的select语句外加括号,写个as和表名,一定要记住上面这样的写法,非常有用。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值