MySQL 中的动态数据透视表
使用数据库时,创建数据透视表来汇总多列数据通常很有用。然而,当列名称是动态的时,它可能会带来挑战。本文探讨了如何在 MySQL 中创建动态数据透视表,特别是当用户 ID 为整数时。
在用户提供的示例中,当用户 ID 为整数时查询失败,但当用户 ID 为整数时查询正常那是一根绳子。出现问题的原因是这些值被直接用作列名称。要解决此问题,需要将值括在反引号 (`) 中以创建有效的列名称。
例如,而不是:
max(case when user_id = 1 then score end) as 1
更正的语法将是:
max(case when user_id = 1 then score end) as `1`
此外,动态选择列时,还必须包含反引号。更正后的查询如下所示:
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql FROM measure2; SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' FROM measure2 GROUP BY inspection_date'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
通过进行这些调整,即使用户 ID 是整数,也可以成功生成数据透视表。
以上是如何使用整数用户 ID 在 MySQL 中创建动态数据透视表?的详细内容。更多信息请关注PHP中文网其他相关文章!