MySQL оператор SELECT, который группирует результаты по идентификатору? - PullRequest
3 голосов
/ 27 апреля 2010

Я пытаюсь создать оператор MySQL SELECT, который будет выбирать группу строк из таблицы и группировать результаты по идентификатору строки (несколько строк будут иметь одинаковый идентификатор).

Вот пример того, что я пытаюсь сделать. Допустим, у меня есть следующая таблица:

id     |     name  
1      |     Art  
1      |     Arnold  
1      |     Anatoly  
2      |     Beatrice  
2      |     Bertha  
2      |     Betty  
3      |     Constantine  
3      |     Cramer  

Я бы хотел, чтобы MySQL возвращал данные, сгруппированные по идентификатору, примерно так:

[1] => Art, Arnold, Anatoly
[2] => Beatrice, Bertha, Betty
[3] => Constantine, Cramer

Я знаю, что мог бы сделать простой выбор SQL, а затем перебрать результат в PHP, но я бы хотел, чтобы MySQL по возможности обрабатывал группировку.

1 Ответ

4 голосов
/ 27 апреля 2010

Одним из возможных решений является использование функции MySQL GROUP_CONCAT (expr) .

SELECT
  GROUP_CONCAT(name)
FROM
  foo
GROUP BY
  id

Но имейте в виду:

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