如何使用整数用户 ID 在 MySQL 中创建动态数据透视表?

Mary-Kate Olsen
发布: 2024-11-14 16:13:02
原创
337 人浏览过

How to Create Dynamic Pivot Tables in MySQL with Integer User IDs?

MySQL 中具有动态列的数据透视表

此问题解决了创建具有动态列的 MySQL 数据透视表的挑战。虽然该解决方案在将 user_id 定义为字符串时有效,但在遇到整数值时会失败。

提供的代码片段说明了创建数据透视表的初始尝试。但是,为了解决与整数 user_id 值相关的问题,更正在于动态 SQL 查询中构造列名称的方式。

原始代码:

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS ',
      user_id
    )
  ) INTO @sql
登录后复制

int user_id值导致了问题,因为它们直接用作列名。为了解决这个问题,这些值需要用反引号 (`) 括起来。更正后的代码对此进行了调整:

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
登录后复制

最终更正后的查询:

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;
登录后复制

通过这些调整,即使在处理整数 user_id 值时,现在也可以成功生成数据透视表。

以上是如何使用整数用户 ID 在 MySQL 中创建动态数据透视表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板