WITH RECURSIVE
cte AS ( SELECT JSON_REMOVE(json_field, JSON_UNQUOTE(JSON_SEARCH(json_field, 'one', '102'))) json_field
FROM source_table
UNION ALL
SELECT JSON_REMOVE(json_field, JSON_UNQUOTE(JSON_SEARCH(json_field, 'one', '102'))) json_field
FROM cte
WHERE JSON_SEARCH(json_field, 'one', '102') )
SELECT json_field
FROM cte
WHERE JSON_SEARCH(json_field, 'one', '102') IS NULL;
и соответственно
UPDATE source_table
JOIN ( WITH RECURSIVE
cte AS ( SELECT id, JSON_REMOVE(json_field, JSON_UNQUOTE(JSON_SEARCH(json_field, 'one', '102'))) json_field
FROM source_table
UNION ALL
SELECT id, JSON_REMOVE(json_field, JSON_UNQUOTE(JSON_SEARCH(json_field, 'one', '102'))) json_field
FROM cte
WHERE JSON_SEARCH(json_field, 'one', '102') )
SELECT id, json_field
FROM cte
WHERE JSON_SEARCH(json_field, 'one', '102') IS NULL
) processed USING (id)
SET source_table.json_field = processed.json_field;