json数组里对象指定字段所有值怎么通过MySQL函数更新
时间: 2024-01-02 15:03:24 浏览: 68
假设你有一个名为 `my_table` 的表格,其中包含一个 `json_array` 字段,其中包含多个对象,并且你想要更新其中一个对象的某个字段的所有值。你可以使用 MySQL 的内置函数 `JSON_SET()` 和 `JSON_EXTRACT()` 来完成这个任务。
首先,使用 `JSON_EXTRACT()` 函数来提取需要更新的对象,然后使用 `JSON_SET()` 函数来更新该对象指定字段的所有值。下面是一个示例 SQL 查询,其中更新了 `my_table` 表中 `json_array` 字段中 `id` 为 `1` 的对象的 `name` 字段的所有值为 `new_name`:
```
UPDATE my_table
SET json_array = JSON_SET(json_array, CONCAT('$[', idx, '].name'), 'new_name')
CROSS JOIN (
SELECT idx FROM JSON_TABLE(json_array, '$[*]' COLUMNS (idx FOR ORDINALITY, id INT PATH '$.id')) AS jt
WHERE jt.id = 1
) AS jt
WHERE jt.idx IS NOT NULL;
```
注意,上面的查询使用了 MySQL 8.0 中的 `JSON_TABLE()` 函数和 `CROSS JOIN` 关键字,如果你的 MySQL 版本较低,你可能需要使用其他方式来提取对象的索引值。另外,请根据实际情况修改查询中的表格名和字段名。
阅读全文