MYSQL - 将新数组元素追加到 JSON 列
MYSQL - append new array elements to JSON column
我有一个 table 和 json 列,默认为空数组 [].
旧table
id
myJson
A1
[1, 2]
A12
[]
我希望 table 更新到下面。
id
myJson
A1
[1, 2, 321, 432]
A12
[222]
尝试过 - INSERT INTO table (id, myJson) VALUES ("A1", "[321, 432]"), ("A12", "[222]") ON DUPLICATE KEY UPDATE myJson = JSON_ARRAY_APPEND(myJson, "$", myJson)
到目前为止,以上查询和其他尝试未产生理想的结果。
我可以使用什么查询将新数组附加到旧数组,如 table 所示?
您使用的 MySQL 是什么版本?
一种选择是使用 JSON_MERGE_PRESERVE
or JSON_MERGE_PATCH
(根据需要):
INSERT INTO `table` (`id`, `myJson`)
VALUES ('A1', '[321, 432]'), ('A12', '[222]') AS `new`
ON DUPLICATE KEY UPDATE
`table`.`myJson` = JSON_MERGE_PRESERVE(`table`.`myJson`, `new`.`myJson`);
见dbfiddle。
我有一个 table 和 json 列,默认为空数组 [].
旧table
id | myJson |
---|---|
A1 | [1, 2] |
A12 | [] |
我希望 table 更新到下面。
id | myJson |
---|---|
A1 | [1, 2, 321, 432] |
A12 | [222] |
尝试过 - INSERT INTO table (id, myJson) VALUES ("A1", "[321, 432]"), ("A12", "[222]") ON DUPLICATE KEY UPDATE myJson = JSON_ARRAY_APPEND(myJson, "$", myJson)
到目前为止,以上查询和其他尝试未产生理想的结果。
我可以使用什么查询将新数组附加到旧数组,如 table 所示?
您使用的 MySQL 是什么版本?
一种选择是使用 JSON_MERGE_PRESERVE
or JSON_MERGE_PATCH
(根据需要):
INSERT INTO `table` (`id`, `myJson`)
VALUES ('A1', '[321, 432]'), ('A12', '[222]') AS `new`
ON DUPLICATE KEY UPDATE
`table`.`myJson` = JSON_MERGE_PRESERVE(`table`.`myJson`, `new`.`myJson`);
见dbfiddle。