写一个mysql批量修改数组的 sql语句
时间: 2024-04-03 11:36:29 浏览: 99
MySQL 不直接支持数组类型,但可以使用 `JSON` 类型来存储数组。假设有一个表格 `students`,其中有一个字段 `grades` 存储了学生的成绩信息,其数据类型为 `JSON` 类型,格式如下:
```
[{"subject": "math", "score": 90}, {"subject": "english", "score": 85}, {"subject": "chinese", "score": 95}]
```
现在需要将数学成绩修改为 95 分,可以使用以下 MySQL 批量更新语句:
```
UPDATE students SET grades = JSON_SET(grades, '$[0].score', 95) WHERE JSON_EXTRACT(grades, '$[0].subject') = 'math';
```
解释一下这个语句的含义:
- `JSON_SET(grades, '$[0].score', 95)`:使用 `JSON_SET` 函数修改 `grades` 字段的第一个元素(即数学成绩)的 `score` 值为 95 分。
- `WHERE JSON_EXTRACT(grades, '$[0].subject') = 'math'`:使用 `JSON_EXTRACT` 函数获取 `grades` 字段的第一个元素(即数学成绩)的 `subject` 值,若等于 `'math'`,则执行更新语句。
这个语句会将所有数学成绩为 90 分的记录的数学成绩修改为 95 分。如果要修改其他科目的成绩,只需将 `'$[0].score'` 中的 `0` 替换为相应的索引即可。
阅读全文