在mysql中用逗号分隔所选值的字符串


74

我想在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"

Answers:


173

检查一下

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

11

如果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;

1
参加GROUP_CONCAT :)
Sanal K,

8

使用mysql的group_concat()函数。

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 

8

首先到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;


5

组中值之间的默认分隔符是逗号(,)。要指定其他任何分隔符,请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


好答案。在此示例中,用逗号分隔此答案后可以有一个空格。
Yagnesh bhalala


0

对于在SQL Server中执行此操作的人来说,是这样:用于STRING_AGG获得相似的结果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.