gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:12:36 25 4
gpt4 key购买 nike

我想根据其 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com