更新JSON对象MySQL

时间:2018-08-14 15:39:58

标签: mysql json

我想在MySQL中更新JSON对象。

id (int-11, not_null, auto_inc)
labels (json)

JSON美化

[
  {
    "tagname": "FOO",
    "category": "CAT_1",
    "isnew": "no",
    "isdeleted": "no"
  },
  {
    "tagname": "BAR",
    "category": "CAT_2",
    "isnew": "yes",
    "isdeleted": "no"
  }
]

我想在现有对象旁边添加一个新的TAG元素(JSON OBJECT),但无需先选择该字段并用文本更新所有字段。 我有很多Google,但我还不了解MySQL的JSON处理方式。我刚刚学习了如何插入这样的数据:

INSERT INTO `table_name`(
    `id` ,
    `labels` 
)
VALUES(
    null ,
    JSON_ARRAY
    (
        JSON_OBJECT
        (
            "tagname", "FOO",
            "category", "CAT_1",
            "isnew", "no",
            "isdeleted", "no"
        ),
        JSON_OBJECT
        (
            "tagname", "BAR",
            "category", "CAT_2",
            "isnew", "yes",
            "isdeleted", "no"
        )

    ) 
);

1 个答案:

答案 0 :(得分:2)

您可以使用JSON_ARRAY_APPEND

UPDATE tab
SET labels = JSON_ARRAY_APPEND(labels, '$', 
     JSON_OBJECT
        (
            "tagname", "BARX",
            "category", "CAT_3",
            "isnew", "yes",
            "isdeleted", "no"
        )                         
 )
WHERE ID = 1;

DB-Fiddle.com demo