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=# ,然后将返回值组合到最后一个数组。 但是,我正在寻找只使用一个查询的解决scheme。

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