sql - 获取所有指定条件的json对象
问题描述
我有一个jsonarray,如下所示
[{"key1":10},{"key1":20},{"key1":30}]
我想获取具有指定条件的所有 json 对象。说获取 key1 小于 25 的所有 json 对象。所以我的 sql 查询应该返回这个列表
[{"key1":10},{"key1":20}]
对此产生的 SQL 查询是什么。
解决方案
SELECT
json_agg(elements) -- 3
FROM mytable,
json_array_elements(mydata) as elements -- 1
WHERE (elements ->> 'key1')::int < 25 -- 2
- 提取 JSON 数组:每个元素现在都在自己的记录中
- 按值过滤。请注意,它
->>
返回一个 typetext
,因此您需要int
在您的情况下将其转换为 type - 将剩余元素重新聚合到新数组中
推荐阅读
- mysql - 如何知道我们可以在 mysql 中使用子查询的所有地方在哪里?
- .net-core - ASP.NET Core HotChocolate 架构拼接错误
- c - 根据名称对结构项数组进行排序
- ubuntu - Gerrit 没有管理员帐户 - 如何创建管理员帐户?
- android - firebase OnSuccessListener 是否在单独的线程上运行?
- django - 连接django html模板的问题
- java - Spring boot Embedded MongoDB 在构建期间无法正常工作
- javascript - 一个人如何根据 React 状态重复一个“摇晃”的 CSS 类(所以不是 onClick)
- java - Spring Data Elasticsearch 文档没有被反序列化
- jquery - 如何调用与我单击的缩略图具有相同“.length”的 div?