2014-02-26 82 views
1

這是我的mysql查詢。我需要得到的ID和計數值,當我在逗號分隔通過ID獲取id並統計單個表中的mysql記錄

SELECT tag_id AS id, COUNT(tag_id) AS count FROM tag WHERE tag_id IN (1, 2, 3, 28); 

我得到

--------------- 
| id | count | 
--------------- 
| 1 | 4 | 
--------------- 

預期的結果是:

---------------- 
| id | count | 
---------------- 
| 1 | 2 | 
| 2 | 1 | 
| 3 | 5 | 
| 28 | 0 | 
---------------- 

請幫助....

回答

1

使用聚合函數應該將它們分組

SELECT tag_id AS id, COUNT(tag_id) AS count 
FROM tag WHERE tag_id IN (1, 2, 3, 28) 
GROUP BY tag_id ; 

GROUP BY (Aggregate) Functions

+1

感謝它的工作 – Aruljothi

1

你需要一個group by聲明:

SELECT tag_id AS id, COUNT(tag_id) AS count 
FROM tag 
WHERE tag_id IN (1, 2, 3, 28) 
GROUP BY tag_id; 

您的查詢聚集查詢沒有group by,所以它返回一個行(將所有行作爲一組)。

接下來,如果您想返回0的計數,那麼查詢需要以不同的方式進行結構化。這裏是一個版本使用left join

select ids.id, count(t.tag_id) as cnt 
from (select 1 as id union all 
     select 2 union all 
     select 3 union all 
     select 28 
    ) ids left join 
    tag t 
    on t.tag_id = ids.id 
group by ids.id; 
+0

你打我幾秒:( –

相關問題