[英]How do I iterate over an array in a nested json object in sqlite?
假设我有一个 sqlite 表features
,它的列data
包含 json 对象。
CREATE TABLE features ( id INTEGER PRIMARY KEY, data json )
现在,示例数据 object 可能是:
{"A":
{"B":
{"coordinates":[
{"x":1, "y":10},
{"x":10, "y":2},
{"x":12, "y":12}
]
}
}
现在, coordinates
数组中 json 对象的数量可以因行而异。 一些文档可以有 3 个坐标(如上例),而其他文档可能有 5 个或更多坐标。
对于每一行或文档,我希望能够仅迭代x
值并找到最小值,对于y
值也是如此。 因此,该示例的结果将是 x 为 1,y 为 2。
我可以使用json_each
获取数组中的所有 json 对象,但我不能仅提取一行的 x 。 我试过了:
select value from features, json_each(json_extract(features.data, '$.A.B.coordinates'));
但是,这似乎为所有行返回“所有” coordinate
json 对象。 我如何 go 关于迭代一个文档的数组并从中提取值,这样我就可以 select 一个文档的最小值或最大值?
在json_each(json_extract())
之后再次使用json_extract()
提取每个x
和y
并聚合:
SELECT f.id,
MIN(json_extract(value, '$.x')) x,
MIN(json_extract(value, '$.y')) y
FROM features f, json_each(json_extract(f.data, '$.A.B.coordinates'))
GROUP BY f.id
请参阅演示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.