GROUP_CONCAT - сложения столбца при выборке с разделителем
Функция GROUP_CONCAT
складывает (как
строки) содержимое одного поля из разных
строк, вставляя между ними разделитель (по
умолчанию это запятая). К примеру, можно
получить список всех выбранных имен через
запятую или другой разделитель.
У этой функции есть ограничение на объем
выводимых данных. По умолчанию 1024
символа для каждого объединения - для каждой
выводимой строки. Если размер склеенных данных
больше, то он будет урезаться. Чтобы расширить
размер нужно выполнить команду SET group_concat_max_len
= 4096; Если у вас есть привилегии, то вы
расширите объем получаемых данных до 4096
,
можно и больше. Но чаще всего на обычных
хостингах таких привилегий нет.
Без указания разделителя (по умолчанию это будет запятая):
SELECT GROUP_CONCAT(поле) FROM `имя_таблицы`; -- возможно применение операторов
С указанием разделителя:
SELECT GROUP_CONCAT(поле SEPARATOR разделитель) FROM `имя_таблицы`; -- возможно применение операторов
В данном примере запрос находит все имена из таблицы и выводит их через запятую:
SELECT GROUP_CONCAT(name) as name FROM `employees`;
В данном примере разделитель меняется на
'+'
с помощью команды SEPARATOR
:
SELECT GROUP_CONCAT(name SEPARATOR '+') as name FROM `employees`; -- возможно применение операторов
В данном примере с помощью команды WHERE
выбираются не все строки, а заданные:
SELECT GROUP_CONCAT(name) as name FROM `employees` WHERE id>=3 AND id<=5
В данном примере с помощью команды GROUP BY
строки группируются по возрасту и
для каждой группы через запятую выводятся имена работников с таким возрастом:
SELECT age, GROUP_CONCAT(name) as name FROM employees GROUP BY age; -- возможно применение операторов
Поменяем разделитель на '-'
:
SELECT age, GROUP_CONCAT(name SEPARATOR '-') as name FROM employees GROUP BY age;