Как сгруппировать строки в MySQL по условию
Есть таблица в 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?
Ответы (2 шт):
Автор решения: user453575457
→ Ссылка
Используйте группировку:
SELECT id_user, COUNT(*) cnt
FROM tbl
GROUP BY id_user;
UPD: начальный вариант был неверный
Автор решения: Nowhere Man
→ Ссылка
Правильный ответ -- группировка должна выполняться по полю 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