it-swarm.com.de

SQL: Wie erhält man die Anzahl der einzelnen Werte in einer Spalte?

Ich habe eine SQL-Tabelle namens "posts", die so aussieht:

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

Jede Kategorienummer entspricht einer Kategorie. Wie gehe ich vor, um zu zählen, wie oft jede Kategorie in einem Beitrag in eine SQL-Abfrage vorkommt?

Eine solche Abfrage kann beispielsweise ein symbolisches Array wie das folgende zurückgeben: (1:3, 2:2, 3:1, 4:1)


Meine aktuelle Methode besteht darin, Abfragen für jede mögliche Kategorie zu verwenden, z. B .: SELECT COUNT(*) AS num FROM posts WHERE category=#, und dann die Rückgabewerte zu einem endgültigen Array zu kombinieren. Ich suche jedoch nach einer Lösung, die nur eine Abfrage verwendet.

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