如何从此语句创建JSON(B):
SELECT *
FROM foo
LEFT JOIN bar
USING (id)
我的解决方案当前如下所示:
SELECT to_jsonb(foo) || coalesce(to_jsonb(bar), '{}')
FROM foo
LEFT JOIN bar
USING (id)
对于每个连接的表,这变得更加难看,例如:
SELECT to_jsonb(foo) || coalesce(to_jsonb(bar), '{}') || coalesce(to_jsonb(baz), '{}')
FROM foo
LEFT JOIN bar
USING (id)
LEFT JOIN baz
USING (id)
我想要这样的东西:
SELECT to_jsonb(*)
FROM foo
LEFT JOIN bar
USING (id)
但这给了我
[42883]错误:函数to_jsonb()不存在
答案 0 :(得分:3)
第三个查询产生r * 10 // q
和pow(10, k-1, q) * p % q * 10 // q
中具有相同bar
的所有行的笛卡尔积。无论是否打算,都可以使用派生表,将转换为JSON移到外部查询。
baz