Если Вам необходимо склеить вывод команды SELECT, представляющий собой некий набор строк, в одну строку, разделенную собственно заданным разделителем - вот решение. Для этого в MySQL используется оператор GROUP_CONCAT:
SELECT GROUP_CONCAT(expr SEPARATOR ',')
Например:
SELECT GROUP_CONCAT(title SEPARATOR ';') FROM mytable
вместо вывода нескольких строк с title выведет только одну, склеенную символом ';'. Вот изначальная таблица и результат запроса:
mytable
---
id title
1 one
2 two
3 three
result
---
one;two;three
Другой пример:
SELECT (SELECT GROUP_CONCAT(mytable2.value SEPARATOR ':') FROM mytable2 WHERE mytable2.reason=mytable1.sourcevalue) FROM mytable1;
В этом примере мы извлекаем из таблицы mytable2 значения value строк, reason которых совпадает с sourcevalue первой таблицы, и выстраиваем это все в одну строку с разделителем ':' (несколько строк т.к. склеивание происходит для каждой строки mytable1). Вот пример таблиц и результата (для этого запроса):
mytable1:
---
sourcevalue
1
2
3
mytable2:
---
reason value
1 A
1 B
2 C
3 D
4 E
result:
---
A:B
C
D
PS. ВНИМАНИЕ! У данной функции есть ограничение по-умолчанию на 1024 символа в объединенной строке. Чтобы это ограничение изменить - нужно выполнить следующий запрос (при наличии соответствующих прав):
SET group_concat_max_len = 16384;
где вместо 16384 указать максимальный размер объединенной строки в символах.
Комментарии
Оставить комментарий
Базы данных - MySql (Maria DB)
Термины: Базы данных - MySql (Maria DB)