В основном возникает вопрос, как это сделать:
id string 1 A 1 B 2 C
:
id string 1 A B 2 C
SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
Из приведенной выше ссылки GROUP_CONCAT
: эта функция возвращает результат строки с объединенными значениями, отличными от NULL, из группы. Он возвращает NULL, если нет значений, отличных от NULL.
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
Подробнее здесь.
Из приведенной выше ссылки GROUP_CONCAT
: эта функция возвращает результат строки с объединенными значениями, отличными от NULL, из группы. Он возвращает NULL, если нет значений, отличных от NULL.
SELECT id, GROUP_CONCAT(CAST(string as CHAR)) FROM table GROUP BY id
Дает вам строку с разделителями-запятыми
SET group_concat_max_len=100000000
group_concat_max_len
? Текущее соединение / сеанс, или это повлияет на других клиентов?
SELECT id, GROUP_CONCAT(string SEPARATOR ' ') FROM table GROUP BY id;
: - В MySQL вы можете получить конкатенированные значения комбинаций выражений , Чтобы устранить повторяющиеся значения, используйте предложение DISTINCT. Чтобы отсортировать значения в результате, используйте предложение ORDER BY. Чтобы отсортировать в обратном порядке, добавьте ключевое слово DESC (убыванию) в имя столбца, который вы сортируете, в предложении ORDER BY. По умолчанию используется восходящий порядок; это может быть указано явно с использованием ключевого слова ASC. Разделитель по умолчанию между значениями в группе является запятой ( "," ). Чтобы явно указать разделитель, используйте SEPARATOR, за которым следует строковое литераловое значение, которое должно быть вставлено между значениями группы. Чтобы полностью исключить разделитель, укажите СЕПАРАТОР '.
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
ИЛИ
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR ' ')
-> FROM student
-> GROUP BY student_name;
Отличные ответы. У меня также была проблема с NULLS и удалось решить ее, включив COALESCE внутри GROUP_CONCAT. Пример следующим образом:
SELECT id, GROUP_CONCAT(COALESCE(string,'') SEPARATOR ' ')
FROM table
GROUP BY id;
Надеюсь, это поможет кому-то еще.