【发布时间】:2021-08-27 13:54:15
【问题描述】:
我在data 列中有一个带有 json-column 的表,还有一个带有要从第一个表中删除的键的表。 MySQL 5.7。
| id | data |
|---|---|
| 1 | {"key1": "value1", "key2": "value2", "key10": "value10", "key100": "value100"} |
| 20 | {"key1": "value1", "key18": "value18", "key150": "value150"} |
| 57 | {"key5": "value5", "key10": "value10"} |
| id | key | value |
|---|---|---|
| 1 | key1 | value1 |
| 18 | key2 | value2 |
| 30 | key150 | value150 |
我想从第二个表中删除所有带有键的元素。
我试过JSON_ARRAYAGG() 但JSON_REMOVE() 需要根据docs 的带有键的“路径[,路径]”结构。
UPDATE `table1` as `t1`
SET `t1`.`data` = JSON_REMOVE(`t1`.`data`, (
SELECT JSON_ARRAYAGG(`key`)
FROM `table2` as `t2`
)
);
我还没有从子查询行中找到关于 json 路径的示例或文档。 如何将返回的行中的行或数组值转换为正确的路径?
查询后我期望的结果:
| id | data |
|---|---|
| 1 | {"key10": "value10", "key100": "value100"} |
| 20 | {"key18": "value18"} |
| 57 | {"key5": "value5", "key10": "value10"} |
【问题讨论】:
标签: mysql mysql-json