json对象数组 sql 统计对象中某个属性值 出现的次数
时间: 2024-01-09 14:04:09 浏览: 32
你可以使用SQL的聚合函数和子查询来实现这个需求。假设你的JSON对象数组存储在名为 `table` 的表中,且属性值存储在名为 `property` 的列中,你可以使用以下SQL语句来统计每个属性值出现的次数:
```
SELECT property, COUNT(*) as count
FROM (
SELECT JSON_EXTRACT(json_column, '$.property') as property
FROM table
) as subquery
GROUP BY property
```
这个查询语句首先使用 `JSON_EXTRACT` 函数从 `json_column` 字段中提取出 `property` 属性的值,然后在内部子查询中进行统计。最后在外部查询中使用 `GROUP BY` 对 `property` 属性进行分组,并使用 `COUNT` 函数计算每个属性值出现的次数。
相关问题
json对象数组 sql 查询 对象key为id 的 每一个 值
如果你想要查询JSON对象数组中每个对象中key为`id`的值,你可以使用MySQL的`JSON_EXTRACT`函数来实现。
假设你的JSON对象数组存储在名为 `table` 的表中,且每个对象中都有一个名为 `id` 的key,你可以使用以下SQL语句来查询每个对象中的 `id` 值:
```
SELECT JSON_EXTRACT(json_column, '$.id') as id_value
FROM table
```
这个查询语句使用 `JSON_EXTRACT` 函数从 `json_column` 字段中提取出 `id` 属性的值。你可以使用这个查询语句来获取每个对象中的 `id` 值,并将结果返回给你的应用程序。
mysql 更改json数组中的指定对象值
可以使用 MySQL 中的 JSON 函数和操作符来更改 JSON 数组中的指定对象值。以下是一个示例:
假设有一个名为 `test` 的表,其中有一个名为 `json_col` 的 JSON 类型的列,其中包含以下 JSON 数组:
```
[
{"id": 1, "name": "Alice", "age": 25},
{"id": 2, "name": "Bob", "age": 30},
{"id": 3, "name": "Charlie", "age": 35}
]
```
现在,要将 `id` 为 2 的对象的 `age` 值更改为 32,可以使用以下 SQL 语句:
```
UPDATE test SET json_col = JSON_SET(json_col, CONCAT('$[', JSON_SEARCH(json_col, 'one', '2', NULL, '$[*].id'), '].age'), 32) WHERE id = 1;
```
解释:
1. `JSON_SEARCH(json_col, 'one', '2', NULL, '$[*].id')` 返回 JSON 数组中 `id` 值为 2 的元素的路径,例如 `"$[1]"`。
2. `CONCAT('$[', JSON_SEARCH(json_col, 'one', '2', NULL, '$[*].id'), '].age')` 用于构建要更新的属性的路径,例如 `"$[1].age"`。
3. `JSON_SET(json_col, CONCAT('$[', JSON_SEARCH(json_col, 'one', '2', NULL, '$[*].id'), '].age'), 32)` 将指定路径的属性值更改为 32。
4. `WHERE id = 1` 用于指定要更新的行。
这样,`id` 为 2 的对象的 `age` 值就被更改为了 32。