mysql - 从 MySQL 中的 JSON 数组中删除
问题描述
我正在通过 JSON 数组管理关注者列表。我正在使用 JSON_ARRAY_APPEND 添加关注者:
UPDATE users
SET follows = JSON_ARRAY_APPEND(follows, '$', "followerToBeAdded")
WHERE username = "user"
但是,我无法从此列表中删除关注者。如果我尝试 JSON REMOVE,它只会删除整个 JSON 数组,而不是仅从列表中删除特定的追随者。
对可能的查询有任何想法吗?
解决方案
由于您在MySQL
问题中添加了标签,因此以下响应与MySQL
.
让我们考虑users
具有两列username
和 json 列的表follows
。假设我们有一个用户名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;
推荐阅读
- vhdl - 在 VHDL 中使用 Others 和 Aggregate
- mysql - MySQL 插入 ENUM 字段留空
- kubernetes - 为什么不能更改节点池_name_?
- javascript - 您好,我的 xs 屏幕范围的菜单按钮始终存在并且无法正常工作,我很确定问题出在我的 JS 文件上
- sql - SQL左反半连接等效查询
- spring - 将 Apache Commons Lang3 添加到我的 Spring Boot 项目中
- c - MSVC 手动链接标准库
- r - 如何在R中的pairs.panels()中按组按不同颜色分隔散点图
- ruby-on-rails - 如何在 Rails 中使用具有相同模型名称的第二个活动记录连接?
- c# - 在网页 c# 代码中显示长 HTML 文本