Postgresql 如何在一个select语句中使用ID组合两个jsonb对象?
我不熟悉PostgresSQL上的jsonb操作。我的数据库中有两个表,其中一个包含一个json blob,另一个表的ID嵌套在其中:Postgresql 如何在一个select语句中使用ID组合两个jsonb对象?,postgresql,Postgresql,我不熟悉PostgresSQL上的jsonb操作。我的数据库中有两个表,其中一个包含一个json blob,另一个表的ID嵌套在其中: Table A id | content 1 | { oneKey: "something", params: {anotherKey: "something", tableBEntries: [1,2]}} 2 | { oneKey: "something2", params: {anotherKey: "something2", tableBEntrie
Table A
id | content
1 | { oneKey: "something", params: {anotherKey: "something", tableBEntries: [1,2]}}
2 | { oneKey: "something2", params: {anotherKey: "something2", tableBEntries: [3]}}
...
我想从表A中选择条目,并将它们与表B结合起来,结果如下:
Result
id | content
1 | { oneKey: "something", params: {anotherKey: "something", tableBEntries: [{someKeysB: "values", anotherKeyB: "values"}, {someKeysB: "values2", anotherKeyB: "values2"}]}}
2 | { oneKey: "something2", params: {anotherKey: "something2", tableBEntries: [{someKeysB: "values3", anotherKeyB: "values3"}]}}
但是,我找不到这样做的方法,在一个简单的select
语句中……只提取了tableBEntries
:
select jsonb_array_elements(tableA.content->'params'->'tableBEntries')
谢谢你的帮助
id
fromb
b
组内容tableBEntries
元素替换为聚合的b值select jsonb_array_elements(tableA.content->'params'->'tableBEntries')
SELECT
jsonb_set(content, ARRAY['params','tableBEntries'], agg) -- 4
FROM (
SELECT
a.*,
jsonb_agg(b.content) AS agg -- 3
FROM
a,
jsonb_array_elements_text(content -> 'params' -> 'tableBEntries') as entries -- 1
JOIN -- 2
b ON entries.value::int = b.id
GROUP BY a.id, a.content
) s