Mysql 统计数据时解决部分数据因不符合where条件被筛除的问题

104 阅读1分钟

举个例子

这是一个用户表 user

id
1
2
3

这是一个操作记录表 user_log

user_iddate
12021-01-01
12021-01-02
12021-01-03
12021-01-04
12021-01-05
22021-01-01
22021-01-02
22021-01-03
22021-01-04
22021-01-05
32021-02-01

我需要统计所有用户在1月的操作次数 如果我这样写

SELECT count(0), user_id FROM USER LEFT JOIN user_log ON USER .id = user_log.user_id WHERE user_log.date LIKE "%2021-01%" GROUP BY user_id

那么查询结果会是

count(0)user_id
51
52

如果想要把所有用户都查出来,就需要将查询条件放到count里 比如这样

` SELECT count(IF(user_log.date LIKE "%2021-01%",0,null)), user_id FROM USER LEFT JOIN user_log ON USER .id = user_log.user_id WHERE

GROUP BY user_id `

那么查询结果会是

count(0)user_id
51
52
03