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

mysql where 和 having 的区别

时间:2014-08-24 19:31:43      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:mysql where 和having的区别

作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。

where 是对表的筛选,而having是对聚合结果的筛选。

有时候having和where都可以达到同样的结果,但是要优先使用where。


WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)


having一般跟在group by之后,执行记录组选择的一部分来工作的。
where则是执行所有数据来工作的。
再者having可以用聚合函数,如having sum(qty)>1000

本文出自 “程序猿的那些年” 博客,请务必保留此出处http://uyuyuuy.blog.51cto.com/6190986/1544140

mysql where 和 having 的区别

标签:mysql where 和having的区别

原文地址:http://uyuyuuy.blog.51cto.com/6190986/1544140

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