Как использовать JSON_REMOVE по нескольким записями из подзапроса?
Есть таблица с json в колонке data и таблица с ключами для удаления из json-полей первой таблицы. 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 |
Необходимо удалить все элементы в полях data по ключам из второй таблицы
Я пробовал JSON_ARRAYAGG(), но JSON_REMOVE() необходима "path[, path]"-структура с ключами согласно документации.
UPDATE `table1` as `t1`
SET `t1`.`data` = JSON_REMOVE(`t1`.`data`, (
SELECT JSON_ARRAYAGG(`key`)
FROM `table2` as `t2`
)
);
Как можно преобразовать возвращаемые записи в корректную структуру для JSON_REMOVE()?
Ожидаемая таблица:
| id | data |
|---|---|
| 1 | {"key10": "value10", "key100": "value100"} |
| 20 | {"key18": "value18"} |
| 57 | {"key5": "value5", "key10": "value10"} |