gpt4 book ai didi

sql - 从联接表创建 JSON

转载 作者:行者123 更新时间:2023-11-29 11:44:08 26 4
gpt4 key购买 nike

如何从这个语句创建 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] ERROR: function to_jsonb() does not exist

最佳答案

第三个查询生成 barbaz 中具有相同 id 的所有行的笛卡尔积。无论是否有意,您都可以使用派生表,将到 JSON 的转换移动到外部查询。

select to_jsonb(q)
from (
select *
from foo
left join bar using(id)
left join baz using(id)
) q

关于sql - 从联接表创建 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58595804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com