【发布时间】:2026-01-19 16:15:02
【问题描述】:
我想将选择查询的结果行转换为逗号分隔的字符串。我有一个表,其中有 153 列。选择查询如下
SELECT * FROM mytable where id = 3
我想要以逗号分隔的字符串中的所有结果 153 列。 MySql有什么技巧吗?
【问题讨论】:
我想将选择查询的结果行转换为逗号分隔的字符串。我有一个表,其中有 153 列。选择查询如下
SELECT * FROM mytable where id = 3
我想要以逗号分隔的字符串中的所有结果 153 列。 MySql有什么技巧吗?
【问题讨论】:
您可以使用GROUP_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;
【讨论】:
Group_concat() 将给出多行的结果,而不是多个comumns。
SELECT GROUP_CONCAT(COLUMN_NAME) INTO @cols FROM information_schema.COLUMNS WHERE TABLE_NAME = 'myTable'; SELECT CONCAT_WS(',', @cols) FROM myTable WHERE id = 3; 但这给了我逗号分隔的列名称。不是价值观...有什么帮助吗?
您可以使用concat() 函数,但据我所知,您需要为每一列命名。
select concat(col1, ',', col2, ',', col3) from myTable where id=3
我知道获取表的所有列的唯一方法是SHOW COLUMNS FROM table,我想您可以将结果包含在您的查询中,但这不是我以前做过的事情。
【讨论】: