想象一个超级简单的表,例如:查询使用jsonb_each和横向的Postgres的内部JSONB IDS
create table object (
id INT,
data jsonb
);
随着一些数据:
INSERT INTO object (id, data) VALUES
(4, '{"nodes":{"f":{"id":1}}}'), -- C
(5, '{"nodes":{"d":{"id":2}, "e":{"id":3}}}'), -- B
(6, '{"nodes":{"b":{"id":4}, "c":{"id":5}}}') -- A
;
我想解构的JSON和也查询儿童。
例如,如果我这样做
SELECT * FROM jsonb_each('{"a":{"id":1},"b":{"id":2}}'::JSONB) as obj
我会回来:
a {"id":1}
b {"id":2}
我想结合这让id
性质了嵌套对象和查询的儿童(没有运气):
SELECT
jsonb_each(data->'nodes')
FROM objects as objs
WHERE id=6
LATERAL (SELECT * FROM objects as ref WHERE ref.id = objs->'id');
我提供了一个SQL小提琴,如果它有帮助:http://sqlfiddle.com/#!17/50fb2/9
编辑:
这里是一个例子输出:再次任何洞察到这一
id data
4 '{"nodes":{"f":{"id":1}}}'
5 '{"nodes":{"d":{"id":2}, "e":{"id":3}}}'
谢谢!
请编辑的问题,并添加一个示例输出。 – klin
@klin我刚刚在上面添加了输出示例,谢谢! – pyramation