You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写MariaDB JSON字段追加、编辑、删除记录的SQL查询语句?

前提说明

假设存储JSON数据的表名为your_table,JSON列名为resume_list,需要操作的行主键ID为1,所有示例均基于该假设,你可以根据实际场景替换对应字段名和条件。


追加JSON数组元素

使用MariaDB内置的JSON_ARRAY_APPEND函数实现新记录追加,示例:追加一条ID为310的新简历记录

UPDATE your_table
SET resume_list = JSON_ARRAY_APPEND(
  resume_list,
  '$',
  JSON_OBJECT(
    'id', 310,
    'date_created', '2021-10-24',
    'resume', 'mnopqrst'
  )
)
WHERE id = 1;

编辑JSON数组内的指定记录

已知数组下标时

比如要修改数组第1个元素(下标从0开始,$[0]对应ID为287的记录)的resume字段内容:

UPDATE your_table
SET resume_list = JSON_REPLACE(resume_list, '$[0].resume', '修改后的简历内容')
WHERE id = 1;

未知下标、按元素ID匹配修改时

比如要修改ID为300的记录的date_created字段值:

UPDATE your_table
SET resume_list = JSON_REPLACE(
  resume_list,
  -- 匹配到id=300对应的date_created字段路径
  REPLACE(JSON_UNQUOTE(JSON_SEARCH(resume_list, 'one', 300, NULL, '$[*].id')), '.id', '.date_created'),
  '2021-10-25'
)
WHERE id = 1 AND JSON_CONTAINS(resume_list, JSON_OBJECT('id', 300));

删除JSON数组内的指定记录

已知数组下标时

比如删除数组第2个元素(下标$[1]对应ID为300的记录):

UPDATE your_table
SET resume_list = JSON_REMOVE(resume_list, '$[1]')
WHERE id = 1;

未知下标、按元素ID匹配删除时

比如删除ID为287的记录:

UPDATE your_table
SET resume_list = JSON_REMOVE(
  resume_list,
  -- 匹配到id=287对应的元素根路径
  REPLACE(JSON_UNQUOTE(JSON_SEARCH(resume_list, 'one', 287, NULL, '$[*].id')), '.id', '')
)
WHERE id = 1 AND JSON_CONTAINS(resume_list, JSON_OBJECT('id', 287));

注意:以上JSON函数支持MariaDB 10.2.3及更高版本,执行UPDATE操作前建议先执行对应SELECT语句验证匹配结果,避免误改数据。

内容的提问来源于stack exchange,提问作者Mohammad Nadhir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:36:03