json - 在postgres中将2列表转换为json对象
问题描述
我有一张表,代表亲戚之间的关系。
name1
是relationship
的name2
。
name1 | name2 | relationship
-----------------------------
"Joe" | "Mary"| "uncle"
"Sue" | "Mary"| "mother"
etc.
有一个 People 表,其中 name 是主键。
我想查询 allMary
的关系并将结果作为 JSON 对象返回,其中键是对方的姓名,值是关系。
例子:
{
"Joe": "uncle",
"Sue": "mother"
}
假设: Mary 只会出现在 name2 行中。您与任何其他人的关系不能超过 1 次。
我尝试了 json_build_object 和 row_to_json 之类的东西,但我似乎无法让数据呈现正确的形状。
我需要什么查询才能实现这一目标?
以前有没有其他人这样做过?
在此先感谢您的帮助。
解决方案
您正在寻找json_object_agg
功能。请参阅有关聚合函数的文档。
SELECT json_object_agg(name1, relationship) FROM relatives WHERE name2 = 'Mary';
json_object_agg
---------------------------------------
{ "Joe" : "uncle", "Sue" : "mother" }
推荐阅读
- owl - OWL 基数限制的推理
- transactions - 具有 2 个节点的私有以太坊区块链 sendTransaction() 返回“无效发件人”
- sql - 创建相对于注册日期的参与表
- reactjs - 如何处理反应路由器空网址参数
- flutter - 如何绘制垂直链接以连接颤动中的领先图标
- active-directory - Azure AD DS 策略是否应用于无需连接到域网络的用户?
- git - Git“自动打包”似乎已从分支中删除了所有提交
- python - Python 与 Mysql:从 DB 中并行获取可用资源
- node.js - crontab 中的节点版本不一致
- python - discord.py on_member_update 在一台服务器上