mysql中将where条件中过滤掉的group by分组后查询无数据的行进行补0
背景
mysql经常会用到group By来进行分组查询,但也经常会遇到一个问题,就是当有where条件时,被where条件过滤的数据不显示了。
例如我有一组数据:
我想查询创建时间大于某一范围的spu的分组下的sku的数量
正常的sql查出的话,假如不存在相关记录
1 2 3 4 5 6 7 8 9 10 | SELECT product_id , count ( *) count FROM product_sku WHERE create_time >= #{param} AND product_id in (1,2,3,4,5) GROUP BY product_id |
结果查不到任何记录
即使没有数据,也想让count显示出0而不是空的效果
因此,我们想实现,即使没有数据,也想让count显示出0而不是空的效果;
解决方案:构建一个包含所有productId的结果集;然后和我们本来的sql进行左外连接,在最外层利用ifnull函数
sql如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT DISTINCT a.product_id uwci, IFNULL( b. count , 0) usedCount FROM product_sku a LEFT JOIN ( SELECT product_id , count ( *) count FROM product_sku WHERE create_time >= #{param} AND product_id in (1,2,3,4,5) GROUP BY product_id ) AS b ON a.product_id = b.product_id |
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2018-04-09 qqwry.dat输出乱码问题及maven打包后资源文件大小不一致的问题