首页 > 数据库技术 > 详细

sql嵌套查询总结01

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!