MySQL多行转列

标签 mysql pivot-table

<分区>

/image/5Pw2L.png

我有一个问题想解决,以便在 MySQL 中进行预处理。我有一个选择返回一个 id 的多行和多列。我想将行转换为同一 ID 的列,并按照附图对它们进行分组。列名对我来说并不重要,因为我只需要每个 ID 的值。

+---+---+---+---+-----+---+
| 1 | a | b | c | ... | x |
+---+---+---+---+-----+---+
| 1 | d | e | f | ... | y |
+---+---+---+---+-----+---+
| 2 | g | h | i | ... | z |
+---+---+---+---+-----+---+
| 2 | j | k | l | ... | q |
+---+---+---+---+-----+---+
| 3 | m | n | o | ... | w |
+---+---+---+---+-----+---+
| 3 | p | q | r | ... | t |
+---+---+---+---+-----+---+

+---+---+---+---+-----+---+---+---+---+-----+---+
| 1 | a | b | c | ... | x | d | e | f | ... | y |
+---+---+---+---+-----+---+---+---+---+-----+---+
| 2 | g | h | i | ... | z | j | k | l | ... | q |
+---+---+---+---+-----+---+---+---+---+-----+---+
| 3 | m | n | o | ... | w | p | q | r | ... | t |
+---+---+---+---+-----+---+---+---+---+-----+---+

最佳答案

不幸的是,如果您在表中有可变数量的 id 重复,则无法动态创建这样的列。 您可以使用 group concat 将相同的列合并为一个逗号分隔的列

Select Id, Group_Concat(Col1) As Col1, 
        Group_Concat(Col2) As Col2, 
        Group_Concat(Col3) As Col3, ... 
        Group_Concat(Coln) As Coln 
From table 
Group By Id

关于MySQL多行转列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791649/

相关文章:

MySQL:将多个 MAX() 选择与数组组合的最佳方法?

php - INSERT INTO 不同数据库表中的不同字段

php - 根据其他内容列出表格内容

excel - 无法按日期对数据透视表进行排序

MySql-数据透视表

C++数据透视表实现

php - 如何从同一列的 WordPress 自定义字段数据库中检索总和

mysql - 在 MySql 中生成伪列

mysql - 高效的 MySQL/Eloquent 查询通过超过 1 个标签过滤帖子

mysql - 如何优化 MySQL 查询