разделенная запятыми строка выбранных значений в mysql

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

SELECT id FROM table_level where parent_id=4;

которой производятся:

'5'
'6'
'9'
'10'
'12'
'14'
'15'
'17'
'18'
'779'

мой желаемый результат будет выглядеть так:

"5,6,9,10,12,14,15,17,18,779"

7 ответов


проверить это

SELECT GROUP_CONCAT(id)  FROM table_level where parent_id=4 group by parent_id;

Если у вас есть несколько строк для parent_id.

SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 GROUP BY parent_id;

Если вы хотите заменить пробел с запятой.

SELECT REPLACE(id,' ',',') FROM table_level where parent_id=4;

использовать group_concat () функция mysql.

SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 GROUP BY parent_id;

это даст вам конкатенировать строку :

5,6,9,10,12,14,15,17,18,779 

попробуй такое

SELECT CONCAT('"',GROUP_CONCAT(id),'"') FROM table_level 
where parent_id=4 group by parent_id;

результат будет

 "5,6,9,10,12,14,15,17,18,779"

использовать group_concat метод в mysql


первый set group_concat_max_len, иначе это не даст вам всего результата:

SET GLOBAL  group_concat_max_len = 999999;
SELECT GROUP_CONCAT(id)  FROM table_level where parent_id=4 group by parent_id;

разделитель по умолчанию между значениями в группе является запятая(,). Чтобы указать любой другой разделитель, используйте SEPARATOR как показано ниже.

SELECT GROUP_CONCAT(id SEPARATOR '|')
FROM `table_level`
WHERE `parent_id`=4
GROUP BY `parent_id`;

5/6/9/10/12/14/15/17/18/779

чтобы устранить разделитель, используйте SEPARATOR ''

SELECT GROUP_CONCAT(id SEPARATOR '')
FROM `table_level`
WHERE `parent_id`=4
GROUP BY `parent_id`;

см. для получения дополнительной информации GROUP_CONCAT