MySQL中按条件count
时间:2019-08-27
本文章向大家介绍MySQL中按条件count,主要包括MySQL中按条件count使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题
产品中有个业务是定时发通知的,现有的逻辑是,只有通知数>0时,才会发通知,现在PM说要修改为无论有没有消息数,都要在定时的时间发送通知。
原SQL
SELECT count(1) as total, max(mws.id) as maxRuleStatusId, mwr.user_id as userId, mwr.id as ruleId, mwr.wx_openids as wxOpenIds from micro_warning_status mws INNER JOIN micro_warning_rule as mwr ON mws.micro_warning_rule_id = mwr.id
WHERE mwr.notice_interval = #{noticeInterval} AND mws.id > mwr.last_notice_id
group by mwr.user_id, mwr.id;
last_notice_id:表示上一次已经通知的id,mws.id > mwr.last_notice_id
表示距离上一次通知后,有多少条新的消息.
因为这个条件在where
里,所以只有在定时的时间内,有新的消息时,此SQL才不会为空。
新SQL
因为PM要求无论有没有新消息数,都要进行通知。所以要修改一下SQL,新SQL如下:
SELECT sum(if(mws.id > mwr.last_notice_id, 1, 0)) as total, max(mws.id) as maxRuleStatusId, mwr.user_id as userId, mwr.id as ruleId, mwr.wx_openids as wxOpenIds from micro_warning_status mws INNER JOIN micro_warning_rule as mwr ON mws.micro_warning_rule_id = mwr.id
WHERE mwr.notice_interval = #{noticeInterval}
group by mwr.user_id, mwr.id;
通过sum
+if
来有条件地进行count
操作即可达到目的。
原文链接 大专栏 https://www.dazhuanlan.com/2019/08/16/5d560d516cde3/
原文地址:https://www.cnblogs.com/chinatrump/p/11416314.html
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- python第四十二课——__str__(self)函数
- python第四十三课——封装性
- Nginx+Tomcat多实例及负载均衡配置
- python第四十四课——继承性之单继承
- python第四十五课——继承性之多重继承
- Linux系统——keepalived高可用集群服务
- python第四十五课——继承性之多继承
- HTTP服务器Nginx服务介绍续
- python第四十六课——函数重写
- Linux系统Memcached服务介绍
- python第四十七课——类属性和函数属性
- python第四十八课——类函数和对象函数
- python第四十九课——对象序列化与反序列化
- python第五十课——多态性
- python第五十一课——__slots