从联接表创建JSON

时间:2019-10-28 17:37:01

标签: sql json postgresql jsonb

如何从此语句创建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()不存在

1 个答案:

答案 0 :(得分:3)

第三个查询产生r * 10 // qpow(10, k-1, q) * p % q * 10 // q 中具有相同bar的所有行的笛卡尔积。无论是否打算,都可以使用派生表,将转换为JSON移到外部查询。

baz