gpt4 book ai didi

sql - mysql 将结果格式化为列而不是行

转载 作者:行者123 更新时间:2023-11-29 09:21:24 25 4
gpt4 key购买 nike

使用 MySQL 服务器,我的表结构如下:

(Table test)

id Name

1 "test1"
2 "test2"
3 "test3"

当我执行以下查询时:

Select name from test

结果是:

"test1"
"test2"
"test3"

如何调整此查询以使结果为列,如下所示:

"test1" "test2" "test3"

最佳答案

一般来说,最好在应用程序层格式化输出。假设您的表的“名称”列中有 728003 个唯一值。你的结果将变得非常宽。

但是,如果您确实想这样做并且有一些统一的列可以分组,您可以这样做:

SELECT unifying_column, GROUP_CONCAT(DISTINCT name) FROM test
GROUP BY unifying_column;

ps,group_concat只能容纳有限数量的字符

<小时/>

附录

我可以用多个列来完成此操作的唯一方法是这样的(并且它一个可怕的拼凑):

SELECT SUBSTRING_INDEX(nlist,',',1) AS col1,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',2),',',-1) AS col2,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',3),',',-1) AS col3,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',4),',',-1) AS col4,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',5),',',-1) AS col5,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',6),',',-1) AS col6,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',7),',',-1) AS col7,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',8),',',-1) AS col8,
SUBSTRING_INDEX(SUBSTRING_INDEX(nlist,',',9),',',-1) AS col9,
SUBSTRING_INDEX(nlist,',',-1) AS col10
FROM
(SELECT unifying_column, GROUP_CONCAT(DISTINCT name LIMIT 10) AS nlist FROM test
GROUP BY unifying_column) AS subtable;

以上内容未经测试,可能存在语法错误。我也不确定如果名称少于 10 个,它会如何处理额外的列。

关于sql - mysql 将结果格式化为列而不是行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1630924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com