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

时间:2012-08-01 11:22:02

标签: mysql sql

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

SELECT * FROM mytable where id = 3

我想在逗号分隔的字符串中生成所有行的153列。 MySql中有什么技巧吗?

2 个答案:

答案 0 :(得分:9)

您可以使用GROUP_CONCAT功能来执行此操作。

SELECT GROUP_CONCAT(col1, col2,..coln) FROM my_table;

编辑:

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

中的替换
SELECT GROUP_CONCAT(COLUMN_NAME) 
FROM information_schema.COLUMNS 
WHERE TABLE_NAME = 'my_table';

SELECT CONCAT_WS(',', col1, col2, ..., coln) 
FROM my_table;

或尝试:

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;

答案 1 :(得分:0)

您可以使用concat()功能,但据我所知,您需要为每列命名。

select concat(col1, ',', col2, ',', col3) from myTable where id=3

我知道获取表的所有列的唯一方法是SHOW COLUMNS FROM table,我想你可以将这些结果包含在你的查询中,但这不是我以前做过的事情。