簡體   English   中英

使用 COUNT 和 GROUP BY 在 MySQL 中顯示計數為 0 的行

[英]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屬於哪個表? 如果typesubject中,您的左連接應該可以工作。 所以我假設該typeContent中。 那么問題是您的 WHERE 子句與Content中沒有匹配行的情況不匹配。 利用

WHERE (type = @type) OR (type IS NULL)

改為進行外部聯接。 將 null 替換為 0。將非 null 替換為 1。而不是計數,對此列求和。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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