簡體   English   中英

mysql左連接計數始終返回1

[英]mysql left join count always returns 1

這是我的數據結構:

categories 
id   name
-------------------
1    category1
2    category2
3    category3


items
id    name    cat
-------------------
1     item1   1
2     item2   1
3     item3   1
4     item4   2

所需的輸出:

cat   category    total_items
-----------------------------------
1     category1   3
2     category2   1
3     category3   0

我嘗試了以下查詢:

select categories.id as cat, 
    categories.name as category, 
    count(*) AS total_items from categories 
    left join items on categories.id = items.cat

並且它將始終返回類別3的1 ..有什么想法嗎?

嘗試這個:

select categories.id as cat, categories.name as category, 
       count(items.cat) AS total_items 
from categories 
left join items on categories.id = items.cat

您的查詢的問題是COUNT(*)是基於行進行計數的,包括items表中具有NULL值字段的行。

改用count(items.cat) ,將NULL值的字段留在外面。

試試吧...

select categories.id as cat, 
    categories.name as category, 
    count(*) AS total_items from items
    left join categories on items.cat=categories.id

暫無
暫無

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

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