gpt4 book ai didi

MySQL JSON - 如何在匹配路径的所有元素上使用 JSON_SET?

转载 作者:行者123 更新时间:2023-11-29 05:51:15 27 4
gpt4 key购买 nike

我正在尝试找出一个 JSON_SET() 查询,它将 {key2: 2} 添加到 $.a 的所有元素>:

{
"a": [
{
"key1": 1
},
{
"key1": 1
}
]
}

显然,由于路径中的 '*' 而失败:

UPDATE table SET json=JSON_SET(json, '$a[*].key2', 2);

如何做到这一点?

谢谢!

最佳答案

一个选项是 JSON_TABLEJSON_ARRAYAGG :

UPDATE `table`
INNER JOIN (
SELECT
JSON_ARRAYAGG(
JSON_SET(`der`.`_json`, '$.key2', 2)
) `json_key2`
FROM
`table`,
JSON_TABLE(`table`.`json`,
'$.a[*]'
COLUMNS(
`_json` JSON PATH '$'
)
) `der`
GROUP BY
`der`.`_json`
) `der`
SET `table`.`json` = JSON_SET(
`table`.`json`,
'$.a',
`der`.`json_key2`
);

参见 db-fiddle .

关于MySQL JSON - 如何在匹配路径的所有元素上使用 JSON_SET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53916849/

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