我想知道是否可以将结果列表作为JSON对象返回。我的查询比下面的查询更复杂,但为简单起见,请表达我的目标。
SELECT
r.name, r.address
FROM "Locations" AS r
LEFT JOIN "Units" AS f
ON r.city = f.city
每个位置有许多潜在的单位,但最好是将其作为JSON而不是修改我的完整表结构而返回。
因此,我正在寻找的响应是每个位置都有一行的列:名称(字符串),地址(字符串)和单位(表示所有行的JSON)。
在MySQL中这是永远不可能的,想知道我是否可以在Postgres中做到这一点。JSONd的数据不会很大,因此我不太在意性能。
您将想要类似的东西:
SELECT
json_build_object(
'name', r.name,
'address', r.address,
'units', json_agg( json_build_object(
'number', f.number,
-- etc etc fields of units here
))
)
FROM "Locations" AS r
LEFT JOIN "Units" AS f
ON r.city = f.city
GROUP BY r.id;
由于没有提供架构,样本数据,预期输出等,因此很难完全确定。
请注意,您不能嵌套json_agg
呼叫。对于存在多个连接级别的多级别结果,需要使用不同的方法。如果担心的话,请尝试提供一些可以更好地反映您的实际用例的示例,示例数据和预期结果。
您可能需要使用一系列嵌套查询来重新构造表格,FROM
以获取所需的嵌套级别聚合。我认为条件上推和下推仍应防止为要丢弃的行创建JSON,但尚未最终证实这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句