MySQL如何实现列转行:方法与实例详解
MySQL中实现列转行(将多列数据转换为多行记录)的核心方法是使用UNION ALL或CROSS JOIN结合条件筛选,但更灵活高效的方案是通过UNION ALL配合列值直接映射,若表格包含多列数据(如year_2021、year_2022、year_2023),需将其转换为年份和数值的行结构,可执行以下操作:
SELECT '2021' AS year, year_2021 AS value FROM table_name UNION ALL SELECT '2022' AS year, year_2022 AS value FROM table_name UNION ALL SELECT '2023' AS year, year_2023 AS value FROM table_name;
关键点说明:

- 适用场景:适用于静态列转换,如固定年份、季度或类别字段。
- 动态处理:若需动态适应列名变化,可结合存储过程或预处理语句生成SQL。
- 性能注意:
UNION ALL会多次扫描表,大数据量时需考虑索引优化或临时表分步处理。
扩展方案:
- 使用
CASE WHEN或JSON_TABLE(MySQL 8.0+)实现更复杂的行列转换。 - 借助
UNPIVOT语法(部分数据库支持,但MySQL需通过上述方法模拟)。
通过合理选择方法,可高效解决数据展示或分析中的行列结构转换需求。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/9279.html发布于:2026-08-06





