温馨提醒

亲爱的游客,你的浏览器太旧啦.都啥年代了.为了你的安全,为了你的体验,为更好的浏览本页, 赶紧更新一把吧.....本博客不支持ie8以下浏览器,如果你使用的是ie浏览器,请您更新到ie8或以上版本.

推荐使用谷歌浏览器(chrome)或火狐浏览器(Firefox),点击下方按键进行安装

码农部落

  ——好记性,不如烂博客!

mysql子查询

#where型子查询

指把内层查询的结果作为外层查询的比较条件

#查询最新的商品(以id最大为最新)

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

#要求不能用order by

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

#用where型子查询,查出每个栏目下最新的商品(以id最大为最新)

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

 

#from型子查询

把内层的查询结果当成临时表,供外层sql再次查询

#用from型子查询,查出每个栏目下最新的商品(以id最大为最新)

select cat_id,goods_id,goods_name from (select goods_name,cat_id,goods_id from goods order by cat_id,goods_id desc) as tmp group by cat_id;

#查出挂科2门以及2门以上的学生的平均成绩,子查询来做。表下如。

+——+———+——-+

| name | subject | score |

+——+———+——-+

| 张三 | 数学 | 90 |

| 张三 | 语文 | 50 |

| 张三 | 地理 | 40 |

| 李四 | 语文 | 55 |

| 李四 | 政治 | 45 |

| 王五 | 政治 | 30 |

+——+———+——-+

select name,avg(score) from stu where name in (select name from (select name,sum(score<60) as gk from stu group by name having gk>=2) as tmp) group by name;

#不用子查询

select name,avg(score),sum(score<60) as gk from stu group by name having gk>=2;

 

#exists子查询

把外层的查询结果,拿到内层,看内层的查询是否成立

#有商品的栏目

mysql> select cat_id,cat_name from category where exists (select *from goods whe

re goods.cat_id = category.cat_id);

码农部落
声明:本博客文章多数为博主笔记,绝无版权问题,欢迎转载(能注明出处更好),有任何问题,请在下方评论框留言.


发表评论

电子邮件地址不会被公开。 必填项已用*标注