You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL Pivoting 行转列实现:按assoc分组将多行player值转为多列

MySQL行转列(Pivoting)实现方案

以下两种实现方式可适配不同版本的MySQL环境,将现有数据表转换为你需要的展示格式:


1. MySQL 8.0及以上版本(支持窗口函数)

通过ROW_NUMBER()窗口函数给每个assoc分组内的player排序,再通过分组聚合提取对应列的值:

SELECT 
  assoc,
  MAX(CASE WHEN rn = 1 THEN player END) AS player1,
  MAX(CASE WHEN rn = 2 THEN player END) AS player2,
  MAX(CASE WHEN rn = 3 THEN player END) AS player3
FROM (
  SELECT 
    assoc,
    player,
    -- 按assoc分组,内部按player排序生成行号
    ROW_NUMBER() OVER (PARTITION BY assoc ORDER BY player) AS rn
  FROM 替换为你的实际表名
) AS temp_table
GROUP BY assoc;

如果需要调整player列的排列顺序,只需要修改ORDER BY后面的排序规则即可。


2. MySQL 5.x版本(无窗口函数支持)

通过用户自定义变量实现分组编号逻辑,效果和窗口函数一致:

SELECT 
  assoc,
  MAX(CASE WHEN rn = 1 THEN player END) AS player1,
  MAX(CASE WHEN rn = 2 THEN player END) AS player2,
  MAX(CASE WHEN rn = 3 THEN player END) AS player3
FROM (
  SELECT 
    assoc,
    player,
    @row_num := IF(@current_assoc = assoc, @row_num + 1, 1) AS rn,
    @current_assoc := assoc
  FROM 替换为你的实际表名
  -- 初始化变量
  CROSS JOIN (SELECT @row_num := 0, @current_assoc := NULL) AS init_vars
  ORDER BY assoc, player
) AS temp_table
GROUP BY assoc;

内容的提问来源于stack exchange,提问作者dimoss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:06:04