Mysql子查询
2015-08-08 19:31
686 查看
1.知识结构图
1.1 完整的子查询形式
![](http://images0.cnblogs.com/blog2015/760403/201508/091831120022595.jpg)
1.2 子查询应用位置
![](http://images0.cnblogs.com/blog2015/760403/201508/091836400027122.jpg)
1.3 子查询结果类型
![](http://images0.cnblogs.com/blog2015/760403/201508/091836491125072.jpg)
2.where型子查询
(把内层查询结果当作外层查询的比较条件)#不用order by 来查询最新的商品
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
#取出每个栏目下最新的产品(goods_id唯一)
select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);
3.from型子查询
(把内层的查询结果供外层再次查询)#用子查询查出挂科两门及以上的同学的平均成绩
思路:
#先查出哪些同学挂科两门以上
select name,count(*) as gk from stu where score < 60 having gk >=2;
#以上查询结果,我们只要名字就可以了,所以再取一次名字
select name from (select name,count(*) as gk from stu having gk >=2) as t;
#找出这些同学了,那么再计算他们的平均分
select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk >=2) as t) group by name;
4.exists型子查询
(把外层查询结果拿到内层,看内层的查询是否成立)#查询哪些栏目下有商品,栏目表category,商品表goods
select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);
相关文章推荐
- MySQL的语句执行顺序
- MySQL常用语法
- 查看MySQL编码格式指令
- 重装MySQL重装遇到的问题解决办法
- MYSQL中的my.cnf中文说明
- 配置MySQL大小写敏感
- MySQL 中间表的使用语法记录
- 活用mysql的binlog进行数据恢复
- MySQL连接查询
- mysql DATE_FORMAT截取时分秒
- Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法
- mysql性能优化的19个要点
- MySQL语法大全_自己整理的学习笔记
- mysql 给axel数据创建表
- php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库
- MySQL基础
- Mysql 数据库 表 字段字符集修改
- ubuntu安装mysql
- 电商平台--Mysql主从搭建(2)
- MySQL性能优化的最佳20+条经验