Sql 返回带有postgres函数的JSON数组
我不熟悉Postgres函数。 我试图返回JSON响应的一部分,类似于:Sql 返回带有postgres函数的JSON数组,sql,json,postgresql,Sql,Json,Postgresql,我不熟悉Postgres函数。 我试图返回JSON响应的一部分,类似于: "ids":[ "9f076580-b5f5-4e73-af08-54d5fc4b87c0", "bd34cfad-53c7-4443-bf48-280e34d76881" ] 这个ID存储在表单元中,我将其作为子查询的一部分进行查询,然后在下一次查询中将其转换为JS
"ids":[
"9f076580-b5f5-4e73-af08-54d5fc4b87c0",
"bd34cfad-53c7-4443-bf48-280e34d76881"
]
这个ID存储在表单元中,我将其作为子查询的一部分进行查询,然后在下一次查询中将其转换为JSON
SELECT coalesce(json_agg(row_to_json(wgc)), '[]'::json)
FROM (
SELECT
(
SELECT COALESCE(json_agg(row_to_json(ids)), '[]'::json)
FROM (SELECT json_agg(l.ids) as "id"
FROM unit
) as ids
) as "ids",
......
FROM companies c
) AS wgc;
问题是这个查询给了我要省略的提取对象。
ID:[
{
身份证:[
9f076580-b5f5-4e73-af08-54d5fc4b87c0,
bd34cfad-53c7-4443-bf48-280e34d76881
]
}
]
怎么能省略这个id对象呢?要知道您的表是什么样子有点困难,但类似的东西应该可以工作:
select jsonb_build_object('ids', coalesce(jsonb_agg(id), '[]'::jsonb))
from unit
我认为你把事情复杂化了。您只需要一个嵌套级别就可以将ID作为数组获取。在ID数组上不需要使用row_to_json。外层的第_行到第_行json将正确处理这个问题
SELECT coalesce(json_agg(row_to_json(wgc)), '[]'::json)
FROM (
SELECT (SELECT json_agg(l.ids) FROM unit ) as ids
....
FROM companies c
) AS wgc;
事实上,选择。。。from unit不是一个相关联的子查询,但有点可疑。这意味着您将为companys表中的每一行获得相同的数组。我本以为会有类似select的东西。。从单元u开始,其中u.??=C作为ids,要知道您的表是什么样子有点困难,但是类似这样的东西应该可以工作:
select jsonb_build_object('ids', coalesce(jsonb_agg(id), '[]'::jsonb))
from unit
我认为你把事情复杂化了。您只需要一个嵌套级别就可以将ID作为数组获取。在ID数组上不需要使用row_to_json。外层的第_行到第_行json将正确处理这个问题
SELECT coalesce(json_agg(row_to_json(wgc)), '[]'::json)
FROM (
SELECT (SELECT json_agg(l.ids) FROM unit ) as ids
....
FROM companies c
) AS wgc;
事实上,选择。。。from unit不是一个相关联的子查询,但有点可疑。这意味着您将为companys表中的每一行获得相同的数组。我本以为会有类似select的东西。。从单元u开始,其中u.??=C作为ids,我不完全理解你的问题。此代码:
SELECT (
SELECT COALESCE(json_agg(row_to_json(ids)), '[]'::json)
FROM (SELECT json_agg(l.ids) as "id"
FROM unit l
) as ids
) as "ids"
返回:
[{"id":["9f076580-b5f5-4e73-af08-54d5fc4b87c0", "bd34cfad-53c7-4443-bf48-280e34d76881as"]}]
这似乎是你想要的
他是一把小提琴
查询中的其他内容是返回一个以ID作为字段的JSON对象。你似乎想要构造你想要的对象。我不完全理解你的问题。此代码:
SELECT (
SELECT COALESCE(json_agg(row_to_json(ids)), '[]'::json)
FROM (SELECT json_agg(l.ids) as "id"
FROM unit l
) as ids
) as "ids"
返回:
[{"id":["9f076580-b5f5-4e73-af08-54d5fc4b87c0", "bd34cfad-53c7-4443-bf48-280e34d76881as"]}]
这似乎是你想要的
他是一把小提琴
查询中的其他内容是返回一个以ID作为字段的JSON对象。你似乎想要构造你想要的对象。l是什么?您的查询不完整。l是什么?您的查询不完整。已更新一点。很抱歉,我不能发布完整查询的真实代码。谢谢你的帮助。基本上,它是嵌套在另一个内部postgres函数中的select。更新了一点。很抱歉,我不能发布完整查询的真实代码。谢谢你的帮助。基本上,它是嵌套在另一个内部postgres函数中的select。你说得对。找到了一个解决方案SELECT coalescejson_aggrow_to_jsonwgc,[]::来自SELECT SELECT coalescejson_agg ids的json。。。。。基本上有一个级别是冗余的,你是对的。找到了一个解决方案SELECT coalescejson_aggrow_to_jsonwgc,[]::来自SELECT SELECT coalescejson_agg ids的json。。。。。基本上有一个层次是多余的