81

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

10 回答 10

185

检查这个

SELECT GROUP_CONCAT(id)  FROM table_level where parent_id=4 group by parent_id;
于 2013-10-24T06:28:05.813 回答
13

如果 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;
于 2013-10-24T06:29:27.743 回答
9

使用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 
于 2013-10-24T06:33:49.513 回答
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;
于 2018-01-16T06:30:49.547 回答
7

试试这个

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"
于 2013-10-24T06:30:51.030 回答
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

于 2017-01-27T19:27:14.187 回答
2

group_concatmysql中的使用方法

于 2013-10-24T06:27:21.673 回答
0

对于在 SQL Server 中执行此操作的人来说也是如此:用于STRING_AGG获得类似的结果。

于 2020-05-28T01:45:24.903 回答
0

使用 GROUP_CONCAT,这是使其灵活的另一种方法:

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

这将返回值:

"181","187","193","199","205","211","217","223","229","235","239","243","247","251"

您可以使用任何其他分隔符连接。如果您想在某处直接使用返回值,这将有所帮助。

于 2021-08-12T15:51:07.927 回答
0
SELECT GROUP_CONCAT(id) as ids FROM table_level where parent_id=4 group by parent_id;
于 2021-11-18T06:58:58.277 回答