表结构大概类似这样。name,time,score,想要的查询是动态的将行值转化为列名,做透视。 我使用了拼接字符串进行,动态的查询,脚本如下
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(a.name = ''',
a.name,
''', a.score, 0)) AS ''',
a.name, ''''
)
) INTO @sql
FROM student_score a;
SET @sql = CONCAT('Select time,', @sql,
' From `student_score` a Group by a.time' );
PREPARE stmt FROM @sql; -- 动态生成脚本
EXECUTE stmt; -- 动态执行脚本
DEALLOCATE PREPARE stmt;
我跑了一下,发现数据量不多的时候,这样查询没问题,当我数据有几十万的时候,转化为列大概有两百多列,就报错了。请教各位 v2er 怎么动态的将几十万数据行值转为列
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.