![](/img/trans.png)
[英]Left outer join with select where value in right table does not return all rows from left
[英]Left Outer Join doesn't return all rows from my left table?
我正在嘗試使用以下查詢獲取每天打開的頁面數。
SELECT day.days, COUNT(*) as opens
FROM day
LEFT OUTER JOIN tracking ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days
我得到的輸出是這樣的:
days opens
1 9
9 2
問題是,在我的日期表中,我有一列包含數字 1 到 30 來表示一個月中的天數。 我做了一個左外連接,我期待在天數列中顯示所有天數!
但我的查詢正在這樣做,為什么會這樣?
感謝大家的幫助。
您指定連接的 tracking.open_id 必須為 10。對於其他行,它將為 NULL,因此它們不會顯示!
條件在WHERE
子句中。 加入表后,評估 WHERE 條件以過濾掉所有符合條件的內容。因此,任何不匹配tracking.open_id = 10
都會被丟棄。
如果要在連接兩個表時應用此條件,與整個數據集條件相比,更好的方法是將其與ON
子句(即連接條件)一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.