首页 > 解决方案 > 查询以将值合并到相关表中的记录中

问题描述

我有一个表“A”:

ID_A Name  ID_B 
1    John  1
2    Mary  2
3    John  2
4    Mary  1
5    Peter 1

还有一个表“B”:

ID_B  Keys
1     Mousse
2     Banana

我想用这个结果创建一个表:

ID_B Keys    Name1 Name2 Name3
1    Mousse  John  Mary  Peter
2    Banana  Mary  John  Null

是否有任何查询来构建它?

谢谢

标签: sqlpostgresql

解决方案


这并不完全符合您的描述,这是不确定的列数。我不知道仅使用 SQL 的方法。

也就是说,PostgreSQL 有很好的数组支持,这可以让你完成 90% 的工作。

select
  b.id_b, array_agg (a.name) as names
from
  b
  join a on
    b.id_b = a.id_b
group by
  b.id_b

您甚至可以将其混合并执行以下操作:

array_agg (a.name order by a.id_a)

或者

array_agg (distinct a.name)

推荐阅读