skb*_*hmn 4 arrays sqlite json
假设我有一个 sqlite 表features,其中有一列data包含 json 对象。
CREATE TABLE features ( id INTEGER PRIMARY KEY, data json )
现在,示例数据对象可能是:
{"A":
{"B":
{"coordinates":[
{"x":1, "y":10},
{"x":10, "y":2},
{"x":12, "y":12}
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,数组中 json 对象的数量coordinates可以随行而变化。有些文档可以有 3 个坐标(上面的示例),而其他文档可能有 5 个或更多坐标。
对于每一行或文档,我希望能够仅迭代x值并找到最小值,对于y值也是如此。因此,该示例的结果对于 x 来说是 1,对于 y 来说是 2。
我可以使用数组内的所有 json 对象json_each,但无法仅提取一行的 x 。我试过:
select value from features, json_each(json_extract(features.data, '$.A.B.coordinates'));
Run Code Online (Sandbox Code Playgroud)
但是,这似乎返回coordinate所有行的“所有”json 对象。如何迭代一个文档的数组并从中提取值,以便我可以为一个文档选择最小值或最大值?
再次使用json_extract()afterjson_each(json_extract())来提取每个xandy并聚合:
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
Run Code Online (Sandbox Code Playgroud)
请参阅演示。
| 归档时间: |
|
| 查看次数: |
1373 次 |
| 最近记录: |