【问题标题】:Update JSON data type column in MySql table更新 MySql 表中的 JSON 数据类型列
【发布时间】:2021-06-16 03:36:45
【问题描述】:

我已经开始使用MySQL 8 并尝试在mysql table 中更新JSON data type

我的table t1 如下所示:

# id    group   names   
1100000 group1  [{"name": "name1", "type": "user"}, {"name": "name2", "type": "user"}, {"name": "techDept", "type": "dept"}]

我想将user3 添加到group1 并写在下面的查询中:

update t1 set names = JSON_SET(names, "$.name", JSON_ARRAY('user3')) where group = 'group1';

但是,上面的查询不起作用

【问题讨论】:

  • 以 CREATE TABLE + INSERT INTO 的形式提供示例数据。显示所需的最终数据状态。
  • 组是MySQL中的保留字

标签: mysql json mysql-json


【解决方案1】:

我想你希望结果是:

[{"name": "name1", "type": "user"}, {"name": "name2", "type": "user"}, {"name": "techDept", "type": "dept"}, {"name": "user3", "type": "user"}]

这应该可行:

UPDATE t1 SET names = JSON_ARRAY_APPEND(names, '$', JSON_OBJECT('name', 'user3', 'type', 'user'))
WHERE `group` = 'group1';

但不清楚您为什么要使用 JSON。存储这些数据的正常方法是为组成员创建第二个表:

CREATE TABLE group_members (
  member_id INT PRIMARY KEY,
  `group` VARCHAR(10) NOT NULL,
  member_type ENUM('user','dept') NOT NULL DEFAULT 'user',
  name VARCHAR(10) NOT NULL
);

然后每行存储一个。

添加一个新成员就像:

INSERT INTO group_members
SET `group` = 'group1', name = 'user3';

比使用 JSON 简单多了!

【讨论】:

    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 2017-07-16
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2019-11-01
    相关资源
    最近更新 更多