postgresql - 带有动态列名的 json_agg()
问题描述
我正在尝试使用这样的代码段从表中获取 JSON 的结果。
SELECT json_agg(json_build_object('latitude',my_table.latitude,
'longitude',my_table.longitude
)) from my_table;
结果:
[
{ "latitude": -24.719103042657146, "longitude": 16.97771468195161 }
]
不幸的是,由于列名是动态的,因此对列名进行硬编码将不起作用。我不确定如何在不确切知道列名的情况下获得相同的结果。
我发现我可以通过这样做来获取列名,但除此之外,我不太确定该去哪里。
SELECT column_name
from information_schema.columns
WHERE table_name = 'my_table';
我的方法是错误的还是有更简单的方法?
解决方案
您可以将完整的行转换为 JSON 值,使用to_jsonb
该值将列名用作 JSON 键:
select jsonb_agg(to_jsonb(t))
from (
select latitude, longitude
from my_table
) t
推荐阅读
- node.js - 从 API 调用上传文件数据到 MongoDB
- rxjs - Typeorm 抛出 Query runner 已经发布。将 Graphql 与 DataLoader 一起使用时无法再运行查询
- windows - win 10 ssh-agent 如何完全删除私有 ssh 密钥
- python - OSError:无法为“path/bert-base-cased”加载分词器
- python - Python 可以将数字/字符串保存在变量中。那么,是否可以将数字和字符串一起保存在一个变量中?
- visual-studio-code - Visual Studio 代码中的哪个设置改变了这样的选择模式?
- python - 围绕 1d numpy 数组创建变量填充
- php - WordPress:我需要在用户角色更改时向用户发送通知,我的代码片段不起作用
- mysql - 从列中计算匹配参数中的多个单词
- spring-batch - 使用 Spring 批处理处理平面文件时如何跳过页眉和页脚