举个例子
这是一个用户表 user
| id |
|---|
| 1 |
| 2 |
| 3 |
这是一个操作记录表 user_log
| user_id | date |
|---|---|
| 1 | 2021-01-01 |
| 1 | 2021-01-02 |
| 1 | 2021-01-03 |
| 1 | 2021-01-04 |
| 1 | 2021-01-05 |
| 2 | 2021-01-01 |
| 2 | 2021-01-02 |
| 2 | 2021-01-03 |
| 2 | 2021-01-04 |
| 2 | 2021-01-05 |
| 3 | 2021-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 |
|---|---|
| 5 | 1 |
| 5 | 2 |
如果想要把所有用户都查出来,就需要将查询条件放到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 |
|---|---|
| 5 | 1 |
| 5 | 2 |
| 0 | 3 |