mysql - 如何根据数据关系将表行转换为列

标签 mysql mysql-workbench

我想根据其 ID 将行数据更改为列,如下表所示。 我必须在同一 id 的一行中显示 5 个单词,如果 id 的单词少于 5 个,则其余列将用“--”符号填充。我在这里使用 mysql,我需要一种动态方法来对任意数量的数据执行此操作。

我的 table :

wordID   Word     Per     Sequence
  1      Kelly    68          1
  1      John     26          2
  2      Nisum    5.29        1
  2      Bily     14.1        2
  2      George   10          3
  2      Rihana   22          4
  3      August   72          1
  3      Rush     22          2
  3      Routh    95          3

所需的表:

wordID   word    Per   word    Per    word    Per   word    Per   word   Per    
  1      Kelly   68    John    26      --     --     --     --    --    --
  2      Nisum   5.29  Bily    14.1   George  10    Rihana  22    --    --
  3      August  72    Rush    22     Routh   95     --     --    --    --  

最佳答案

以下查询将为您提供预期结果:

SELECT wordID,  

    IFNULL(MAX(CASE WHEN Sequence='1' THEN Word ELSE NULL END),'--') AS Word, 
    IFNULL(MAX(CASE WHEN Sequence='1' THEN Per ELSE NULL END),'--') AS  Per,

    IFNULL(MAX(CASE WHEN Sequence='2' THEN Word ELSE NULL END),'--') AS Word, 
    IFNULL(MAX(CASE WHEN Sequence='2' THEN Per ELSE NULL END),'--') AS  Per,

    IFNULL(MAX(CASE WHEN Sequence='3' THEN Word ELSE NULL END),'--') AS Word, 
    IFNULL(MAX(CASE WHEN Sequence='3' THEN Per ELSE NULL END),'--') AS  Per,

    IFNULL(MAX(CASE WHEN Sequence='4' THEN Word ELSE NULL END),'--') AS Word, 
    IFNULL(MAX(CASE WHEN Sequence='4' THEN Per ELSE NULL END),'--') AS  Per,

    IFNULL(MAX(CASE WHEN Sequence='5' THEN Word ELSE NULL END),'--') AS Word, 
    IFNULL(MAX(CASE WHEN Sequence='5' THEN Per ELSE NULL END),'--') AS  Per

FROM tableName 

GROUP BY wordID

注意*:仅当您限制给定 wordID 允许的最大单词数时,这才有用。即在你的情况下是 5。

关于mysql - 如何根据数据关系将表行转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695398/

相关文章:

mysql - ASP.NET Web API 2本地MySQL代码优先

mysql - 将列值作为 mysql 数据库中现有表名传递

mysql - SQL 数据库设计|管理者与团队的角色关系

php - 查找连接 3 个表的 mysql 表中最后一篇文章的用户名

php - 三个表之间的内部连接以获取信息

mysql - 联合查询错误执行

mysql-workbench - Mysql 表 id 10 在第二行

php - phpmyadmin 使用的路径

Mysql Workbench - 在 DOUBLE => 中插入带有逗号的数字 => 错误

mysql - 显示和清除数据库中标签中的值