【问题标题】:Appending an array within JSON array在 JSON 数组中附加一个数组
【发布时间】:2021-11-17 08:07:02
【问题描述】:

我正在使用MySQL 8 并尝试在mysql table 中更新JSON data type

我的table t1 如下所示:

# id    key     value   
1100000 key123  [{"name": "name1", "hosts": ["host123"]}]

现在,我有一个主机列表hostlist,如下所示:

SET @hostlist = '["host343", "host345"]';

我想将@hostlist 附加到value JSON 数组中的hosts 数组:

UPDATE table t1
        SET t1.value = JSON_ARRAY_APPEND('[]', '$', JSON_OBJECT('hosts', @hostlist))
        WHERE t1.key = 'key123';
    

Desired Output:

[{"name": "name1", "hosts": ["host123","host343", "host345"]}]

【问题讨论】:

    标签: mysql arrays json join inner-join


    【解决方案1】:

    您需要使用现有valuehosts 属性的路径并附加到该路径。

    JSON_ARRAY_APPEND() 用于将单个值附加到数组。您需要使用JSON_MERGE_PRESERVE() 来连接数组。然后用JSON_REPLACE()把数组替换成这个。

    UPDATE t1
    SET value = JSON_REPLACE(t1.value, '$[0].hosts', JSON_MERGE_PRESERVE(t1.value->'$[0].hosts', @hostlist))
    WHERE t1.key = 'key123';
    

    DEMO

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2012-03-27
      • 2012-09-22
      相关资源
      最近更新 更多