Mysql json 数组删除数据

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;

在实际项目中的使用

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]"

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

你可能感兴趣的:(Mysql json 数组删除数据)