首页 > 数据库 >mysql中将where条件中过滤掉的group by分组后查询无数据的行进行补0

mysql中将where条件中过滤掉的group by分组后查询无数据的行进行补0

时间:2024-04-09 23:46:13浏览次数:30  
标签:count sku product group 分组 mysql where id

背景

mysql经常会用到group By来进行分组查询,但也经常会遇到一个问题,就是当有where条件时,被where条件过滤的数据不显示了。

例如我有一组数据:

我想查询创建时间大于某一范围的spu的分组下的sku的数量

正常的sql查出的话,假如不存在相关记录

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如下:

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

 

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/18125129

标签:count,sku,product,group,分组,mysql,where,id
From: https://www.cnblogs.com/lingyejun/p/18125129

相关文章

  • 4-3 docker隔离机制-cgroups
    ControlGroup控制组群使用CGroups限制这个环境的资源使用情况cgroup:比如一台16核32GB的机器上只让容器使用2核4GB。使用CGroups还可以为资源设置权重,计算使用量,操控任务(进程或线程)启停等;在/sys/fs/cgroup下面有很多如cpu、memory这样的子目录,也叫子系统,这些都是这台机器......
  • 2-2、dockerfile之php-fpm,mysql
    dockerfile之php-fpm#cddocker-training/php-fpm/#lsDockerfilenginx_nginx.confsupervisor_nginx.confnginx_default.confphp_www.confsupervisor_php-fpm.conf各文件解释:nginx_nginx.conf替换默认的nginx.conf文件nginx_default.conf替换默......
  • MySQL的基础操作(二)
    目录一.数据库约束1.主键约束(PrimaryKey)2.唯一约束(Unique)3.外键约束(ForeignKey):4.检查约束(Check)5.默认约束(Default)二.聚合查询1.简单聚合函数2.GROUPBY子句3.HAVING子句三.联合查询1.内连接2.左连接3.右连接4.子查询5.合并查询一.数据库......
  • MySQL的基础操作
    目录一.数据库的操作1.显示当前的数据库2.创建数据库3.删除数据库4.选择数据库补充:二.表的基础操作1.常用数据类型:2.查看表结构3.创建表4.删除表三.表的增删改查1.新增(Create)2.查询(Retrieve)3.修改(Update)4.删除(Delete)一.数据库的操作1.显示当前的数据库......
  • MYSQL五个常见的聚合函数
    学生表DDLCREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DEFAULTNULL,`phone`varchar(11)DEFAULTNULL,`age`tinyi......
  • mysql5.7迁移到8,如何解决问题 Illegal mix of collations (utf8mb4 general ci,IMPLIC
    SHOWVARIABLESLIKE'%character%';SHOWVARIABLESLIKE'collation%';showvariableswhereVariable_namelike'collation%';showvariableswhereVariable_nameLIKE'collation%'orVariable_nameLIKE'character_......
  • 深入解析MySQL数据库报错:`ERROR 1146 (42S02): Table ‘mysql.user‘ doesn‘t exist`
    在安装或升级MySQL数据库时,你可能会遇到ERROR1146(42S02):Table'mysql.user'doesn'texist错误。这个错误表明尝试访问的mysql.user表不存在,这是MySQL用于存储用户账户和权限信息的关键系统表。本文将详细探讨这一错误的原因和解决方案,帮助你顺利完成MySQL的安装或恢复......
  • MySQL View 视图
    拓展阅读MySQLViewMySQLtruncatetable与delete清空表的区别和坑MySQLRulermysql日常开发规范MySQLdatetimetimestamp以及如何自动更新,如何实现范围查询MySQL06mysql如何实现类似oracle的mergeintoMySQL05MySQL入门教程(MySQLtutorialbook)MySQL04-E......
  • MySQL高可用搭建方案MHA
    MHA架构介绍MHA是MasterHighAvailability的缩写,它是目前MySQL高可用方面的一个相对成熟的解决方案,其核心是使用perl语言编写的一组脚本,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完数据库的故障......
  • MySQL全局锁,表锁,行锁
    数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库需要合理的控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构根据加锁的范围,MySQL里的锁大概可以分为全局锁,表级锁,行锁三类一、全局锁全局锁就是对整个数据库实例加锁,MySQL提供......