如何让PostgreSQL直接返回以指定字段为索引的JSON,无需PHP循环处理?
PostgreSQL直接返回指定结构JSON的实现方案
你要的效果可以通过PostgreSQL内置的聚合函数json_object_agg直接实现,不需要额外的后端代码处理。
具体查询语句
假设你的表名为your_table,替换为实际表名即可:
SELECT json_object_agg(who, "count") AS target_json FROM your_table;
注意:
count是SQL关键字,所以字段名如果是count的话需要用双引号包裹避免语法报错。
返回结果示例
执行上述语句后会直接返回单行的JSON结果,结构和你要求的完全一致:
{ "mary": 2, "had": 9, "a": 12, "lamb": 9 }
扩展说明
- 如果你需要对数据先做过滤,可以正常在
FROM后加WHERE条件,聚合函数会自动只处理符合条件的行 - 如果需要更高的JSON操作性能、或者后续要在数据库侧对该JSON做增删改查,可以用
jsonb_object_agg替换json_object_agg,返回JSONB类型的结果 - 该函数支持PostgreSQL 9.4及以上版本,目前主流使用的PostgreSQL版本都兼容
内容的提问来源于stack exchange,提问作者toxicroadkill
相关产品推荐
相关产品推荐

