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 @ 2023-10-11 16:19  aaron_agu  阅读(845)  评论(0编辑  收藏  举报