在postgres中将记录作为json数组加入

时间:2018-05-01 20:04:45

标签: json postgresql

我想在表格中返回记录,我在一个字段中加入jsons数组。

我有一个工作解决方案,但有一个不受欢迎的f1 insdie它。

当前查询:

select 
    grouped_by_table.json_array as my_col
from profiles
left join (
    select 
        p.profile_id,
        array_to_json(array_agg(row(p))) as json_array
    from (select * from positions) p
    group by profile_id
) as grouped_by_table on grouped_by_table.profile_id::int = profiles.id

当前结果: (这是单个记录的my_col列中的数据)

[{
    "f1": {
        "id": 153,
        "start_year": 2014,
        "end_year": 2016,
        "profile_id": "100"
    }
}, {
    "f1": {
        "id": 151,
        "start_year": 2016,
        "end_year": null,
        "profile_id": "100"
    }
}]

期望的结果: (我想删除f1图层)

[{
    "id": 153,
    "start_year": 2014,
    "end_year": 2016,
    "profile_id": "100"
}, {
    "id": 151,
    "start_year": 2016,
    "end_year": null,
    "profile_id": "100"
}]

谢天谢地。

1 个答案:

答案 0 :(得分:1)

使用json_agg代替array_agg

select  profile_id
,       json_agg(p)
from    positions p
group by
        profile_id

Example at SQL Fiddle.