加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql json聚合

发布时间:2020-12-13 15:58:12 所属栏目:百科 来源:网络整理
导读:我正在使用postgres 9.4,我有以下查询: SELECT pid,code,name FROM activity,( SELECT code FROM project) projects WHERE activity.pcode = projects.code; 返回以下关系: pid | code | name ------------------------------- 1 | p1 | activity1 1 | p3
我正在使用postgres 9.4,我有以下查询:

SELECT pid,code,name FROM activity,(
  SELECT code FROM project
) projects WHERE activity.pcode = projects.code;

返回以下关系:

pid | code |    name    
-------------------------------
  1 | p1   | activity1 
  1 | p3   | activity2
  2 | p1   | activity3
  2 | p2   | activity4
  2 | p3   | activity5

我试图编写相同的查询,但我得到项目代码一个活动名称作为相对于每个“pid”的json数组

所以我正在寻找一个返回如下内容的查询:

pid | json    
------------------------------------------------------------------------------------
  1 | [{'code': 'p1','name': 'activity1'},{'code': 'p3','name': 'activity2'}] 
  2 | [{'code': 'p1','name': 'activity3'},{'code': 'p2','name': 'activity4'},'name': 'activity5'}]

有任何想法吗?
在此先感谢您的帮助

UPDATE

这是我做的(这与Abelisto所说的很接近):

SELECT pid,json_agg(json_build_object('code','name',name)) AS agg                                                                                                                                    
FROM activity JOIN (                                                                                                                                                                                          
  SELECT code FROM project                                                                                                                                                                                    
) AS p ON p.code=activity.pcode                                                                                                                                                                               
GROUP BY pid;

解决方法

select
  pid,name))
from
  ...
group by
  pid

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读