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

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

Ответ 2

Вы можете использовать этот запрос

SELECT distinct(category), COUNT(id) AS CountCategory FROM tablename GROUP BY category

Используйте отличное ключевое слово для лучшей производительности.

Спасибо!!!