web-dev-qa-db-ja.com

SQL:列内のそれぞれ異なる値の数を取得する方法

このような "posts"というSQLテーブルがあります。

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

各カテゴリ番号はカテゴリに対応しています。各カテゴリが投稿に表示された回数をすべて1つのSQLクエリでカウントするにはどうすればよいでしょうか。

例として、そのようなクエリは次のようなシンボリック配列を返すかもしれません:(1:3, 2:2, 3:1, 4:1)


私の現在の方法は、SELECT COUNT(*) AS num FROM posts WHERE category=#のように、可能な各カテゴリに対してクエリを使用し、そして戻り値を最終的な配列に結合することです。しかし、私は1つだけのクエリを使用するソリューションを探しています。

138
Jeff Gortmaker
SELECT
  category,
  COUNT(*) AS `num`
FROM
  posts
GROUP BY
  category
246
Dan Grossman