[英]MYSQL Count, LEFT OUTER JOIN with 0 count on a simple case
考慮以下兩個示例表
表1:“用戶”
ID REGISTER_TIME FIRSTNAME LASTNAME OPERATION_ID
1 1401789877 John Doe 29
2 1401789879 Jack Doe 29
3 1401789878 Pete Doe 29
(請注意,register_time列存儲為INT(11))
表2:“ calendar_days”
ID DAY
1 2011-01-01
... ....
n 2030-31-12
我有以下運行良好的MySQL查詢:
SELECT d.day, COUNT(d.day)
FROM calendar_days AS d
LEFT OUTER JOIN users AS l ON DATE(FROM_UNIXTIME(l.`register_time`)) = d.day
WHERE l.`operation_id` = 29
GROUP BY d.day;
但這並不能保留count等於零的日子:
day;COUNT(d.day)
2014-05-07;1
2014-05-09;1
2014-05-12;11
2014-05-13;2713
2014-05-14;2631
我想要的是 :
2014-05-07;1
**2014-05-08;0**
2014-05-09;1
2014-05-12;11
2014-05-13;2713
2014-05-14;2631
我覺得我離真相很近,我已經嘗試過任何可能的左外連接,右外連接,但仍然沒有空結果。
您的where
子句將您的left join
聯接變為inner join
聯接,因為您在聯接表上使用了條件。 嘗試
SELECT d.day, COUNT(d.day)
FROM calendar_days AS d
LEFT OUTER JOIN users AS l ON DATE(FROM_UNIXTIME(l.`register_time`)) = d.day
AND l.`operation_id` = 29
GROUP BY d.day;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.