注意:p_date
应该是 dd-mm-yy 格式,但excel决定是一个混蛋,因为它显示为 dd-mm 。
无论如何,对于我的查询,我想检索用户和用户在特定月份发布消息的次数的计数器。
这是我使用的代码:
SELECT users.username, count(*)
FROM publishdate JOIN users
ON publishdate.uid = users.uid
WHERE MONTH(STR_TO_DATE(p_date, '%Y-%m-%d')) = 11
GROUP BY users.username;
当我过滤11月时,我看到ruby
已在该月发布了两次,但如何将已发布0
条消息的所有用户都包含在结果中?
提前谢谢大家。
答案 0 :(得分:1)
您必须在查询左侧使用users
表并执行LEFT JOIN
到publishdate
表:
SELECT users.username, count(publishdate.uid)
FROM users
LEFT JOIN publishdate ON publishdate.uid = users.uid AND
MONTH(STR_TO_DATE(p_date, '%Y-%m-%d')) = 11
GROUP BY users.username;
注意:谓词MONTH(STR_TO_DATE(p_date, '%Y-%m-%d')) = 11
必须出现在查询的ON
子句中,否则LEFT JOIN
将等同于INNER JOIN
操作。