簡體   English   中英

MYSQL計數,在簡單情況下,LEFT OUTER JOIN的計數為0

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM