mysql --子查询

 

 

 

 标量子查询

把价格最高的商品取出来???

select * from goods order by goods_price desc limit 1;

 

 可是价格最高的可能有很多条数据呢?

所以,换一种方式

1,查出最高的价格

select max(goods_price) from goods;

2,根据最高价查询

select * from goods where goods_price = (select max(goods_price) from goods);

 

列子查询

1,查询一列

select brand_id from brand;

2,select * from goods where brand_id in (select brand_id from brand);

 

 

 

行子查询

我要查出价格最高而且brand_id最大的商品

1,得到最高价,得到最大brand_id

select max(goods_price),max(brand_id) from goods;

 

 

 

 2,根据条件查询

select * from goods where (goods_price, brand_id)=(select max(goods_price),max(brand_id) from goods);

 

 

 

表子查询

查出每个品牌(brand_id)最低价的一个

1,可以使用统计函数

  select goods_name,min(goods_price) from goods group by brand_id;

 

 

 2,使用表子查询,,不使用任何统计函数

  2.1,先查出每个品牌的最低价

  select * from goods order by goods_price asc;

 

  2.2,跟聚这个表再分组

  select * from (select * from goods order by goods_price asc) as g  group by  brand_id;

 

 有点问题, 先略过这里---------------------------------------------------------------------------

 

 

 

3,使用自然内连接

1,查出每个品牌的最低价

 select  brand_id,min(goods_price) as goods_price from goods group by brand_id;

 

 

 

 

 

 

 

 select * from goods natural join (select  brand_id,min(goods_price) as goods_price from goods group by brand_id)  as b;

 

posted @ 2020-07-01 11:29  我只沾花不惹草  阅读(167)  评论(0编辑  收藏  举报