在MySql中将结果行从查询转换为逗号分隔的字符串

hem*_*emu 2 mysql sql

我想将select查询中的结果行转换为逗号分隔的字符串.我有一个表,其中有153列.选择查询如下所示

SELECT * FROM mytable where id = 3
Run Code Online (Sandbox Code Playgroud)

我希望以逗号分隔的字符串形式连续生成所有153列.MySql中有什么技巧吗?

Ome*_*esh 9

你可以使用GROUP_CONCAT函数来做到这一点.

SELECT GROUP_CONCAT(col1, col2,..coln) FROM my_table;
Run Code Online (Sandbox Code Playgroud)

编辑:

获取具有以下查询的所有列名称以及CONCAT_WS函数::

SELECT GROUP_CONCAT(COLUMN_NAME) 
FROM information_schema.COLUMNS 
WHERE TABLE_NAME = 'my_table';

SELECT CONCAT_WS(',', col1, col2, ..., coln) 
FROM my_table;
Run Code Online (Sandbox Code Playgroud)

或尝试:

SET @query1 = CONCAT('
        SELECT CONCAT_WS(",", ',(SELECT GROUP_CONCAT(COLUMN_NAME)
                                 FROM information_schema.COLUMNS
                                 WHERE TABLE_NAME = 'my_table'),')
        FROM    tablew_name'
        );
PREPARE stmt FROM @query1; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Run Code Online (Sandbox Code Playgroud)