mysql 删除数组 json 字段中的某个指定值

例:

SELECT car_img FROM logistics_car_info WHERE car_id=2   -- 结果为:["1", "2", "3", "4"]
SELECT JSON_SEARCH(car_img, 'one', '4') FROM logistics_car_info WHERE car_id=2  --结果为:"$[3]"
SELECT JSON_UNQUOTE(JSON_SEARCH(car_img, 'one', '4')) FROM logistics_car_info WHERE car_id=2 --结果为:$[3]
-- 删除为4的数组项 
UPDATE logistics_car_info SET car_img=JSON_REMOVE(car_img, JSON_UNQUOTE(JSON_SEARCH(car_img, 'one', '4'))) WHERE car_id = 2 AND JSON_SEARCH(car_img, 'one', '4') IS NOT NULL; --结果为:["1", "2", "3"]

 

users表 有两个列 分别为 username 列 和 follows列,其中follows列为json数组格式。
且假设表中数据有 用户名为X的用户有一个追随者为a。

添加第二个和第三个追随者的数据

UPDATE users SET follows = JSON_ARRAY_APPEND(follows, '$', 'b') where username ='x';
UPDATE users SET follows = JSON_ARRAY_APPEND(follows, '$', 'c') where username ='x';

移除:假设我们想要移除跟随者b,以检查要移除的跟随者

SELECT JSON_SEARCH(follows, 'one', 'b')  FROM users;

上面将给出数组中要删除的对象的路径。

UPDATE users SET follows = JSON_REMOVE(follows, JSON_UNQUOTE(JSON_SEARCH(follows, 'one', 'b'))) WHERE JSON_SEARCH(follows, 'one', 'b') IS NOT NULL;

 

posted @   aaron_agu  阅读(1006)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示