json - Postgres : Populate a JSON field with an array of values from a subquery

标签 json postgresql

我正在尝试使用现有数据填充一个新的 JSON 字段,并且可以使用一些帮助来正确设置该字段的格式。我有一个子查询返回一个值列表,这些值旨在成为 JSON 属性中的一个数组。子查询返回正确的结果,但我无法完全正确填充 JSON 数组。

我的查询基本上是这样的:

UPDATE foos SET json_property =  
cast(
  '{"bar_ids":' || 
  (select json_agg(x) from (select id from bars) x) || 
  '}'
as json);


我要存储的是:

{"bar_ids":[1,2,3,4]}

但我目前得到的是:

{"bar_ids":[{"id":1},{"id":2},{"id":3},{"id":4}]}

想法?

最佳答案

看来一个子查询是不需要的:

UPDATE foos SET json_property =  
CAST(
  '{"bar_ids":' || 
  (SELECT JSON_AGG(x.id) FROM bars x) || 
  '}'
AS json);

关于json - Postgres : Populate a JSON field with an array of values from a subquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48415868/

相关文章:

java - 使用 MOxy 进行 xml 绑定(bind)返回 null 未编码对象

java - 如何使用runOnUithread运行?

json - postgresql文本到json的转换

c++ - 难以理解协议(protocol)定义

sql - 如何从 SQL 结果中获取参数子集?

sql - 使用索引提高 Postgresql 中的查询性能

c# - 为 DocumentDb 设置自定义 json 转换器

mysql - 谷歌地图标记 : directly from database, xml 或 json

postgresql - 在 Postgres 中首先执行函数

mysql - 单个查询从多个表收集数据