MySql 中聚合函数增加条件表达式的方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Mysql 与聚合函数在一起时候where条件和having条件的过滤时机where 在聚合之前过滤当一个查询包含了聚合函数及where条件,像这样的情况select max(cid) from t
千家信息网最后更新 2026年11月01日MySql 中聚合函数增加条件表达式的方法
Mysql 与聚合函数在一起时候where条件和having条件的过滤时机
where 在聚合之前过滤
当一个查询包含了聚合函数及where条件,像这样的情况
select max(cid) from t where t.id<999
这时候会先进行过滤,然后再聚合。先过滤出ID《999的记录,再查找最大的cid返回。
having 在聚合之后过滤
having在分组的时候会使用,对分组结果进行过滤,通常里面包含聚合函数。
SELECT ip,MAX(id) FROM appGROUP BY ipHAVING MAX(id)>=5
先分组,再聚合,然后过滤聚合结果大于等于5的结果集
二者的区别:
where是先执行,然后再执行聚合函数。having是在聚合函数执行完之后再执行。
下面是补充
有个需求,某张表,有个状态字段(1:成功,2:失败,类似这样的),现要用日期分组统计不同状态下的数量
先写了个子查询
select aa.logDate,aa.totalLogs ,(select count(1) from dxp.dxp_handlermodel where aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') and executeStatus=1) pendingLogs ,(select count(1) from dxp.dxp_handlermodel where aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') and executeStatus=2) successLogs ,(select count(1) from dxp.dxp_handlermodel where aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') and executeStatus=3) errorLogs ,(select count(1) from dxp.dxp_handlermodel where aa.logDate=DATE_FORMAT( startTime, '%Y-%m-%d') and executeStatus=4) callbackErrorLogsfrom( select DATE_FORMAT( a.startTime, '%Y-%m-%d') logDate, count(1) totalLogs from dxp.dxp_handlermodel a group by DATE_FORMAT( a.startTime, '%Y-%m-%d') ) aa
执行相当慢,想到count中能不能加条件,找了一下,如下:
selectDATE_FORMAT( startTime, '%Y-%m-%d') logDate, count(1) totalLogs, count(if(executeStatus=1,true,null)) pendingLogs, count(if(executeStatus=2,true,null)) successLogs, count(if(executeStatus=3,true,null)) errorLogs, count(if(executeStatus=4,true,null)) callbackErrorLogsfrom dxp.dxp_handlermodelgroup by DATE_FORMAT( startTime, '%Y-%m-%d')
简明易懂,且执行效率非常高

其它的聚合函数也可以用,如SUM等其他聚合函数
实战示例:
select count(if(create_date < '2017-01-01' and host_profile_id = '9294d2bf-f457-4fe5-9a36-e5f832310dc2',true,null)) from profile_visit_log -- 等同于 select count(if(create_date < '2017-01-01',true,null)) count from profile_visit_log where host_profile_id = '9294d2bf-f457-4fe5-9a36-e5f832310dc2'
好了这篇文章就介绍到这,希望大家以后多多支持。
函数
条件
分组
结果
时候
状态
查询
不同
最大
简明
成功
个子
字段
实战
情况
效率
数量
日期
时机
易懂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡豆
广东万易互联网科技有限公司惠州分公司
互联网科技公司简介
互联网科技资迅
互联网科技的发展
互联网科技公司电话
苏州大垚互联网科技
互联网科技大会案例
甘肃拓世互联网科技有限公司
蓝色互联网科技
广州慧亚互联网科技怎么样
国大互联网教育科技有限公司工作
工业互联网展湾科技股份有限公司
伍佰万互联网科技怎么赚钱
银行科技岗属于互联网吗
黑云互联网科技有限公司
神州科技互联网有限公司
信承诺互联网科技有限公司
吉林省码上互联网科技电话
数字科技和互联网金融哪个好
互联网科技公司电话
小马过河互联网科技
银优互联网科技有限公司
友谊互联网络科技
郑州华宇互联网科技
无锡溥仪互联网科技有限公司
宁夏科技产业互联网案例
本届互联网博览会上的黑科技
天津腾达互联网科技有限公司
三亚科技创新互联网基地