where型子查询 将内层的查询当做外层查询的比较条件。
对于where子查询:
(1)如果where 列 = (内层sql),则内层sql必须返回单行单列;
(2)如果where 列 in(内层sql),则内层sql必须返回单列。
1、查出本网站goods_id最大的一条商品
思路1:按goods_id desc排序再取第一行
select goods_id,goods_name from goods order by goods_id desc limit 1;
思路2:子查询,第一先将goods_id最大的值拿出来,然后通过子查询实现
select goods_id,goods_name from goods where goods_id = ( select max(goods_id) from goods);
2、查询出每个栏目下id号最大的一条商品.
思路:第一步先查出每个栏目下最大的goods_id
select max(goods_id) from goods group by cat_id;
±--------------+
| max(goods_id) |
±--------------+
| 16 |
| 32 |
| 18 |
| 23 |
| 7 |
| 6 |
| 26 |
| 30 |
| 28 |
±--------------+
第二步:查出每个栏目下最大的goods_id后,使用where语句进行选择商品
select goods_id,goods_name from goods where goods_id in (select max(goods_id) from goods group by cat_id);
mysql子查询:查出本网站goods_id最大的一条商品和每个栏目下id号最大的一条商品.
最新推荐文章于 2023-05-22 17:33:47 发布
