【发布时间】:2013-11-02 17:14:27
【问题描述】:
我想在 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"
【问题讨论】:
我想在 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"
【问题讨论】:
SELECT GROUP_CONCAT(id) as ids FROM table_level where parent_id=4 group by parent_id;
【讨论】:
使用 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"
您可以使用任何其他分隔符进行连接。如果您想在某处直接使用返回值,这将有所帮助。
【讨论】:
对于在 SQL Server 中执行此操作的人来说也是如此:使用 STRING_AGG 获得类似的结果。
【讨论】:
先到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;
【讨论】:
如果 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;
【讨论】:
组中值之间的默认分隔符是逗号(,)。要指定任何其他分隔符,请使用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
【讨论】:
在mysql中使用group_concat方法
【讨论】:
blob。
试试这个
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"
【讨论】:
使用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
【讨论】:
检查一下
SELECT GROUP_CONCAT(id) FROM table_level where parent_id=4 group by parent_id;
【讨论】: