mysql having 与 where

来源:互联网 发布:坚持做一件事 知乎 编辑:程序博客网 时间:2024/04/29 09:03

今天遇到的问题,以前都没思考过太多。
其实区别不是很大,但还是有的。
where 是mysql部分用于查询的过滤条件,也是我们最常用的。
having 是对查询结果进行过滤用的,也就是说只能用于 select后面出现的列名。
其它都一样,where语句怎么写,having语句就怎么写。

举个例子

SELECT count(*) FROM statis WHERE pc>100;

这个很简单,就是算pc列大于100的数据条数。如果这里把where 换成 having就会报错

20:52:04    SELECT count(*) as k FROM netkafem.agent_statis having pc>100   Error Code: 1054. Unknown column 'pc' in 'having clause'    0.001 sec

原因就是查询结果做为的表里没有一个叫pc的列。

再一个

SELECT uid,avg(pc)as apc FROM statis group by uid having apc>30;

这个看起来复杂一点,但还好就是找pc平均值大于30,按uid分组的数据。因为apc在查询的结果表里出现,所以这个地方可以用。

其实说到底,也真得是没多少区别。

0 0
原创粉丝点击