如何将元素推送到 MySQL 中的 JSON
how to push an element to a JSON in MySQL
我正在尝试将新元素推送到 MySQL 中的 JSON 数组。
例如。在关注 table 人中:
id(int) liked_ids(JSON)
1 [2,3]
现在我想将 5 推入 liked_ids。
我看过 JSON_ARRAY_APPEND 但即使从文档中也找不到使用它的方法。
您需要使用:
UPDATE tab
SET liked_ids = JSON_ARRAY_APPEND (liked_Ids, '$', 5)
WHERE id = 1;
编辑:
my liked_ids is initially null.How to enforce it to be an array by default while creating the table?
您可以尝试 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;
我正在尝试将新元素推送到 MySQL 中的 JSON 数组。
例如。在关注 table 人中:
id(int) liked_ids(JSON)
1 [2,3]
现在我想将 5 推入 liked_ids。
我看过 JSON_ARRAY_APPEND 但即使从文档中也找不到使用它的方法。
您需要使用:
UPDATE tab
SET liked_ids = JSON_ARRAY_APPEND (liked_Ids, '$', 5)
WHERE id = 1;
编辑:
my liked_ids is initially null.How to enforce it to be an array by default while creating the table?
您可以尝试 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;