2011-08-13 140 views
103

我有一个名为“上岗” SQL表看起来像这样:SQL:如何获得列中每个不同值的计数?

id | category 
----------------------- 
1 | 3 
2 | 1 
3 | 4 
4 | 2 
5 | 1 
6 | 1 
7 | 2 

每个类别号码对应的类别。如何计算每个类别在帖子上出现的次数全部在一个sql查询

作为一个例子,这样的查询可能返回一个符号阵列,例如这样的:(1:3, 2:2, 3:1, 4:1)


我的当前方法是使用查询针对每个可能的类别,如:SELECT COUNT(*) AS num FROM posts WHERE category=#,然后再结合返回值转换为最终数组。但是,我正在寻找只使用一个查询的解决方案。

+1

的可能的复制[MySQL的:计算不同值的出现(https://stackoverflow.com/questions/1346345/mysql-count-occurrences-of-distinct-values) –

回答

186
SELECT 
    category, 
    COUNT(*) AS `num` 
FROM 
    posts 
GROUP BY 
    category 
+2

谢谢!这比我想象的要简单得多! –

+22

** COUNT(1)**对性能会更好 –

+3

@MichelAyres:source? – Moberg

相关问题