Сгруппировать все поля в один ряд - PullRequest
4 голосов
/ 23 февраля 2012

Как сделать запрос на группировку всех полей в одну строку?

Таблица:

id | type
---------
1  | 1
1  | 1
2  | 2
3  | 3
3  | 3

запрос:

select concat('id(', count(type), ')') from T group by id;

вывод:

id(2)
id(1)
id(2)

Я хочу получить строку вроде: 'id(1)' = 2, 'id(2)' = 1, 'id(3)' = 2

1 Ответ

5 голосов
/ 23 февраля 2012

Если вы делаете это в два этапа.Сделайте ваши id(n) = x записи, затем GROUP_CONCAT () их.

SELECT
  GROUP_CONCAT(id_count SEPARATOR ', ')
FROM
  (SELECT CONCAT('id(', id, ') = ', count(type)) id_count FROM T GROUP BY id) data

Но учтите, что это часто является признаком анти-паттерна SQL.сжать несколько значений в одно значение.И, как правило, рекомендуется разделять представление и слой данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...