gpt4 book ai didi

mysql - 如何将 JSON 数据添加或合并到现有 MySQL 行的 JSON 字段中?

转载 作者:行者123 更新时间:2023-11-29 10:12:27 31 4
gpt4 key购买 nike

我有一个这样的现有表格:

id | json
---+----------
1 | {"1":"1"}
2 | NULL

并且我希望能够将 {"2":"2"} 合并到任何现有行中,或者 json 字段已包含 JSON 或为 NULL。它看起来像这样:

id | json
---+----------
1 | {"1":"1", "2":"2"}
2 | {"2":"2"}

使用 UPDATE table SET json = CAST('{"2":"2"}' AS JSON) WHERE id=1) 我只能更新第二行或覆盖第一行。

使用 UPDATE table SET json = JSON_MERGE(json, CAST('{"2":"2"}' AS JSON) WHERE id=1) 我只能更新第一行,即第二行保持不变。

是否有一个命令可以解决这两种情况?

最佳答案

一种方法是将当前 json 列合并为 JSON 术语中的空字符串:

UPDATE yourTable
SET json = JSON_MERGE(COALESCE(json, CAST('{}' AS JSON)), CAST('{"2":"2"}' AS JSON))
WHERE id = 1;

另一种快速但肮脏的方法是使用 CASE 表达式来决定是合并还是简单覆盖:

UPDATE yourTable
SET json = CASE WHEN json IS NOT NULL
THEN JSON_MERGE(json, CAST('{"2":"2"}' AS JSON))
ELSE CAST('{"2":"2"}' AS JSON) END
WHERE id = 1;

关于mysql - 如何将 JSON 数据添加或合并到现有 MySQL 行的 JSON 字段中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50739577/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com