[英]Displaying rows with count 0 in MySQL using COUNT and GROUP BY
我有兩個表,主題和內容,其中內容使用外鍵引用主題。 我想顯示每個主題在內容表中出現的次數(如果沒有出現,則為 0)。 但是下面的查詢只給了我計數 > 0 的行,而忽略了其他的:
SELECT Subject.id, Subject.name, COUNT(Content.subject_id) AS `count`
FROM Subject LEFT JOIN Content
ON Subject.id = Content.subject_id
WHERE type = @type
GROUP BY Subject.id;
我檢查並嘗試關注這個、 這個和這個帖子,但由於某種原因,上面的代碼不起作用。
有任何想法嗎?
編輯:類型字段在內容表中,這導致了“Will A”指出的問題
在哪個表中type
列? 我假設它是 Content - 通過在 WHERE 子句中包含該字段,您將強制 LEFT JOIN 右側的 Content 表中包含數據(這意味着 LEFT JOIN 實際上只是一個內部連接)。
嘗試:
SELECT Subject.id, Subject.name, COUNT(Content.subject_id) AS `count`
FROM Subject
LEFT JOIN Content
ON Subject.id = Content.subject_id
AND type = @type
GROUP BY Subject.id;
列type
屬於哪個表? 如果type
在subject
中,您的左連接應該可以工作。 所以我假設該type
在Content
中。 那么問題是您的 WHERE 子句與Content
中沒有匹配行的情況不匹配。 利用
WHERE (type = @type) OR (type IS NULL)
改為進行外部聯接。 將 null 替換為 0。將非 null 替換為 1。而不是計數,對此列求和。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.