Как сгруппировать строки в MySQL по условию

Рейтинг: 0Ответов: 2Опубликовано: 09.04.2023

Есть таблица в MYSQL вида

id id_user
1  1
2  1
3  2
4  3
5  3
6  1
7  4
8  1

Как можно посчитать количество строк id_user, в плане

1 - 4 строки
2 - 1 строка
3 - 2 строки
4 - 1 строка

Сейчас я вижу выход только сначала запросить все id_user, которые есть, а затем вторым запросом просто посчитать отдельно циклом

SELECT COUNT(id_user) FROM table WHERE id_user='1'

А можно ли как то одним запросом сразу вывести информацию по всем id_user?

Ответы

▲ 1Принят

Используйте группировку:

SELECT id_user, COUNT(*) cnt
FROM tbl
GROUP BY id_user;

UPD: начальный вариант был неверный

▲ 2

Правильный ответ -- группировка должна выполняться по полю id_user.
Также стоит отсортировать по соответствующему полю.

SELECT id_user, COUNT(*) cnt
FROM tbl
GROUP BY id_user
ORDER BY id_user

Онлайн демо

id_user cnt
1       4
2       1
3       2
4       1