假设我有一个只有 1 行的 SQL 表:
+----+----+----+------+------+------+-------+
| U1 | U2 | U3 | ACC1 | ACC2 | ACC3 | TOTAL |
+----+----+----+------+------+------+-------+
| 1 | 2 | 4 | 10 | 18 | 17 | 45 |
+----+----+----+------+------+------+-------+
上表由以下字段组成:
- U1:Triple中第一个用户的用户ID
- U2:Triple中第二个用户的用户ID
- U3:Triple中第3个用户的用户ID
- ACC1:U1 的 ACC
- ACC2:U2 的 ACC
- ACC3:U3 的 ACC
- 总计:ACC1 + ACC2 + ACC3
现在,我希望通过将此表转换为以下形式来提高其可读性。
+----+----+
| U | ACC|
+----+----+
| 1 | 10 |
| 2 | 18 |
| 4 | 17 |
+----+----+
我如何在 MySQL 中执行此操作? PIVOT/UNPIVOT 有帮助吗?如果是,怎么办?
最佳答案
最简单的方法是union all
:
select u1 as u, acc1 as acc from t
union all
select u2 as u, acc2 as acc from t
union all
select u3 as u, acc3 as acc from t;
这确实需要扫描表格三次。对于一行,这在性能方面没有任何区别。
pivot
/unpivot
没有帮助,因为 MySQL 不支持它。
关于mysql - 如何将表格从 1 行多列重组为多行少列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48858884/