json - 如何在 Postgres 中连接 JArray 元素?
问题描述
我有列的表:id
(pk)和tasks
(json),例如[{ "name": "xxx"}, ..]
我怎样才能得到这样的结果:id,..,“xxx,...”,如何从tasks
列中的 Json 数组中连接?
解决方案
源数据(表)如下所示:
Id
...tasks
1
... [{"name": "abc",...},{"name: "abd", ...}, ...]
我想查询:
1
..."abc, abd, ..."
我想出了以下方法:
with tmp_data(id, val) as (values (1, '[{ "name": "abc", "col": false }, { "name": "abc", "col": true }]'::json), (2, '[{"name": "123", "col": true}, {"name": "ghg", "col": true }]'::json)),
tmp_data_elements(id, elem) as (select id, json_array_elements(val) from tmp_data)
select x.id, string_agg(x.elem::varchar, ', ') as concated
from (select id, elem->'name' as elem from tmp_data_elements ) x
GROUP BY 1
推荐阅读
- date - 日期过滤器不作为 DAX 代码的一部分工作
- javascript - 排序中断后通过电子邮件发送脚本
- angularjs - ng-modal 不适用于模态内的表单
- python - 如何从python列表中删除字符
- php - 如何将我的 SQL 查询连接到 PHP 中的重置按钮?
- jquery - Jquery find 识别不正确的元素
- swift - 如何在当前循环结束时停止设置为无限循环的avaudioplayernode
- html - 在 ERB 中使用 link_to 生成的 HREF 不可点击
- ruby-on-rails - 如何在一次只查询几个时找到数据库中元素的索引?
- javascript - 如何在 vue.js 中识别何时完成获取