4

我正在尝试将新元素推送到 MySQL 中的 JSON 数组。

前任。下表人员:

id(int)     liked_ids(JSON)
   1              [2,3]

现在我想将 5 推入 like_ids。

我查看了JSON_ARRAY_APPEND但即使从文档中也无法找到使用它的方法。

4

1 回答 1

10

你需要使用:

UPDATE tab
SET liked_ids = JSON_ARRAY_APPEND (liked_Ids, '$', 5)
WHERE id = 1;

DBFiddel 演示

编辑:

我的 like_ids 最初为 null。如何在创建表时默认将其强制为数组?

你可以尝试CASE表达:

UPDATE tab
SET liked_ids = CASE WHEN liked_ids IS NULL THEN '[5]'
                ELSE  JSON_ARRAY_APPEND (liked_Ids, '$', 5)
                END
WHERE id = 1;

--or as @Paul Spiegel mentioned
UPDATE tab
SET liked_ids = COALESCE(JSON_ARRAY_APPEND(liked_Ids, '$', 5), JSON_ARRAY(5))
WHERE id = 1;

DBFiddle 演示2

于 2018-03-04T11:06:45.170 回答