Bas*_*raj 4 sql arrays postgresql json aggregate-functions
我有一个用户表,其中包含 、id、等列。我想在单个 json 对象中以以下格式检索某些用户的信息:nameemail
{
"userId_1" : {"name" : "A", "email": "A@gmail.com"},
"userId_2" : {"name" : "B", "email": "B@gmail.com"}
}
Run Code Online (Sandbox Code Playgroud)
其中user uniqueid是key,包含其信息的json是其对应的value。
我可以使用以下方法在两个单独的行中获取此信息,json_build_object但我希望它以一个 json 对象的形式将其获取到单行中。
您可以使用 json 聚合函数:
select jsonb_object_agg(id, to_jsonb(t) - 'id') res
from mytable t
Run Code Online (Sandbox Code Playgroud)
jsonb_object_agg()将键/值对聚合到单个对象中。键是id每行的 ,值是由表中除 之外的所有列组成的 jsonb 对象id。
样本数据:
编号 | 名称 | 电子邮件 :----- | :--- | :---------- 用户id_1 | 一个 | A@gmail.com 用户id_2 | 乙| B@gmail.com
结果:
| 资源 |
| :---------------------------------------------------------------- -------------------------------------------------- --|
| {“userid_1”:{“姓名”:“A”,“电子邮件”:“A@gmail.com”},“userid_2”:{“姓名”:“B”,“电子邮件”:“B@gmail.com” “}} |