码迷,mamicode.com
首页 > 数据库 > 详细

sql嵌套查询总结01

时间:2015-06-27 06:26:25      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:sql嵌套查询总结

1、where 与 HAVING 的区别

   where是在查询结果出来之前,进行条件过滤,而HAVING是在查询结果出来之后,进行条件过滤。

最明显的区别就是:where后面加的字段名必须是要查询的实体表里存在的字段,而HAVING后面加的字段名是在查询结果之后的虚拟表中存在的字段。

例如:SELECT scoreid,cid AS cid_count FROM score  HAVING cid_count>2


2、group by 后面跟字段名,作用就是将以此字段进行分组。

例如:SELECT sid,COUNT(*) AS cid_count FROM score GROUP BY sid

结果显示为每个sid对应的记录数。


3、where跟group by的嵌套使用:

例如:SELECT sid,COUNT(cid) AS cid_count FROM score WHERE score >90 GROUP BY sid


结果显示为每个sid对应的score大于90的记录数。


4、COUNT(*)为空时,如何显示为0:

COUNT(CASE WHEN score.`score`>90 THEN 1 ELSE NULL END )

即当查找score大于90的记录数为空时,就直接显示为0,不加这个条件,就不会显示。


例如:SELECT student.name, COUNT(CASE WHEN score.`score`>90 THEN 1 ELSE NULL END ) AS course_count FROM course,student,score WHERE student.sid=score.`sid` AND score.`cid` = course.`cid`  GROUP BY score.sid;


结果显示为每个sid对应的score大于90的记录数,为空时显示为0.




参考资料

http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html

本文出自 “工作随笔” 博客,请务必保留此出处http://oanyt.blog.51cto.com/6168303/1666104

sql嵌套查询总结01

标签:sql嵌套查询总结

原文地址:http://oanyt.blog.51cto.com/6168303/1666104

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!