Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JSON数据添加或合并到现有MySQL行的JSON字段中?_Mysql_Json - Fatal编程技术网

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

如何将JSON数据添加或合并到现有MySQL行的JSON字段中?,mysql,json,Mysql,Json,我有一个这样的现有表: id | json ---+---------- 1 | {"1":"1"} 2 | NULL id | json ---+---------- 1 | {"1":"1", "2":"2"} 2 | {"2":"2"} 我希望能够将{“2”:“2”}合并到任何一个现有行中,无论json字段是否已经包含json或为空。 看起来是这样的: id | json ---+---------- 1 | {"1":"1"} 2 | NULL id | json --

我有一个这样的现有表:

id | json
---+----------
1  | {"1":"1"}
2  | NULL
id | json
---+----------
1  | {"1":"1", "2":"2"}
2  | {"2":"2"}
我希望能够将
{“2”:“2”}
合并到任何一个现有行中,无论json字段是否已经包含json或为空。 看起来是这样的:

id | json
---+----------
1  | {"1":"1"}
2  | NULL
id | json
---+----------
1  | {"1":"1", "2":"2"}
2  | {"2":"2"}
使用
updatetable SET json=CAST(“{”2:“2”}”为json),其中id=1)
I只能更新第二行或覆盖第一行

使用
updatetable SET json=json\u MERGE(json,CAST(“{”2:“2”}”为json),其中id=1)
I只能更新第一行,第二行保持不变


有一个命令可以解释这两种情况吗?

一种方法是将当前的
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;