gpt4 book ai didi

MySQL Group By 将属性作为列?

转载 作者:行者123 更新时间:2023-11-29 13:14:14 27 4
gpt4 key购买 nike

我正在执行的一些连接有以下输出:

------------------------------------------------
id title date
------------------------------------------------
1 title1 01/01/03
1 title3 01/01/05
2 title2 01/01/02
2 title3 01/01/01
2 title1 01/01/06
3 title1 01/01/07
3 title2 01/01/09

我想知道是否可以设置查询输出,以便每行都有一个不同的 id。这可以通过允许将标题属性设置为像这样的列来实现吗?

-----------------------------------------------------------
id title1 title2 title3
-----------------------------------------------------------
1 01/01/03 null 01/01/05
2 01/01/06 01/01/02 01/01/01
3 01/01/07 01/01/09 null

我不确定这是否只是疯狂的谈话,但认为可以通过使用 GROUP_BY 来设置一些东西?不过我可能已经偏离了轨道

最佳答案

您只需要基本的条件聚合,假设正好有三个标题:

select id,
max(case when title = 'title1' then `date` end) as title1,
max(case when title = 'title2' then `date` end) as title2,
max(case when title = 'title3' then `date` end) as title3
from table t
group by id;

仅当您知道结果 SQL 中所需的列列表时,此方法才有效。如果您有可变数量的潜在列,那么您有两种选择。第一种是使用 group_concat() 生成如下内容:

id          title1:date; title2:date . . .

执行此操作的 SQL 是:

select id, group_concat(title, ':', date separator '; ')
from table t
group by id;

另一种方法是在字符串中创建必要的 SQL,并使用 prepareexec 来运行它。

关于MySQL Group By 将属性作为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689277/

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