Mysql 与聚合函数在一起时候where条件和having条件的过滤时机
2015-12-25 20:41
501 查看
where 在聚合之前过滤
当一个查询包含了聚合函数及where条件,像这样的情况
select max(cid) from t where t.id<999
这时候会先进行过滤,然后再聚合。先过滤出ID《999的记录,再查找最大的cid返回。
having 在聚合之后过滤
having在分组的时候会使用,对分组结果进行过滤,通常里面包含聚合函数。
SELECT ip,MAX(id) FROM app
GROUP BY ip
HAVING MAX(id)>=5
先分组,再聚合,然后过滤聚合结果大于等于5的结果集
二者的区别:
where是先执行,然后再执行聚合函数。having是在聚合函数执行完之后再执行。
当一个查询包含了聚合函数及where条件,像这样的情况
select max(cid) from t where t.id<999
这时候会先进行过滤,然后再聚合。先过滤出ID《999的记录,再查找最大的cid返回。
having 在聚合之后过滤
having在分组的时候会使用,对分组结果进行过滤,通常里面包含聚合函数。
SELECT ip,MAX(id) FROM app
GROUP BY ip
HAVING MAX(id)>=5
先分组,再聚合,然后过滤聚合结果大于等于5的结果集
二者的区别:
where是先执行,然后再执行聚合函数。having是在聚合函数执行完之后再执行。
相关文章推荐
- 使用MYCAT轻松实现MYSQL水平分片
- [mysql] mysql 查询语句收集
- MySQL Cluster
- mysql语句长度
- MySQL触发器使用详解
- MySQL常见错误代码及代码说明
- MySQL常见错误代码(error code)及代码说明
- MySQL 备份和还原
- xtrabackup备份mysql数据库
- MySQL内置函数获取几天前的日期
- 解决LoadRunner使用mysql lib库测试数据库报错"C 解释器运行时错误: memory violation : Exception ACCESS_VIOLATION received"
- MYSQL explain详解
- 使用JMeter创建数据库(Mysql)测试
- Mysql 几种日志分析
- MySQL Replication 优化和技巧、常见故障解决方法
- Mysql 查看连接数,状态
- mysql 查看表的类型
- mysql utf8mb4与emoji表情
- 使用show profile分析单条查询
- MySql按周,按月,按日分组统计数据