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

在MySql中,将查询结果行转换为逗号分隔的字符串,mysql,sql,Mysql,Sql,我想将select查询中的结果行转换为逗号分隔的字符串。我有一个表,其中有153列。select查询如下所示 SELECT * FROM mytable where id = 3 我希望一行的所有结果153列都是逗号分隔的字符串。MySql中有什么诀窍吗?您可以使用GROUP\u CONCAT函数来实现这一点 SELECT GROUP_CONCAT(col1, col2,..coln) FROM my_table; 编辑: 使用以下查询和CONCAT_WS函数中的替换项获取所有列名: SEL

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

SELECT * FROM mytable where id = 3

我希望一行的所有结果153列都是逗号分隔的字符串。MySql中有什么诀窍吗?

您可以使用
GROUP\u CONCAT
函数来实现这一点

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

使用以下查询和
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;
或者尝试:

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;

您可以使用
concat()
函数,但据我所知,您需要为每一列命名

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

据我所知,获取表中所有列的唯一方法是
显示表中的列
,我想您可以将结果包含到查询中,但这不是我以前做过的事情。

这有帮助吗
Group_concat()
将给出多行的结果,而不是多个组件的结果。@Fluffeh-是的,确切地说,我想要一行逗号分隔的列(使用where子句)@hemu Nevermind,我误解了问题。我以为你想要一个字段中每行的所有列。k…你的解决方案似乎可行。我正在尝试这个-
选择GROUP_CONCAT(COLUMN_NAME)进入@cols FROM information_schema.COLUMNS,其中TABLE_NAME='myTable';从id=3的myTable中选择CONCAT_WS(',',@cols)但这给了我逗号分隔的列名称。不是值…有什么帮助吗?是的,你们需要将所有这些列复制到CONCAT_WS函数,以进行新的查询,并且不要忘记接受答案。是的,这会起作用,但我会在触发器中记下这一点。假设2个月后会添加一个新列,我需要编辑触发代码。这就是为什么不建议使用列名的原因。@hemu不必担心,从这个问题来看,我不确定您的知识水平。我回答了我看到的问题,伙计:)