在 MySql table 中更新 JSON 数据类型列
Update JSON data type column in MySql table
我已经开始使用 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';
但是,上面的查询不起作用
我想你希望结果是:
[{"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。存储此数据的正常方法是为群组成员创建第二个 table:
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 简单多了!
我已经开始使用 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';
但是,上面的查询不起作用
我想你希望结果是:
[{"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。存储此数据的正常方法是为群组成员创建第二个 table:
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 简单多了!