Если вы знаете, что в массиве никогда не бывает дубликатов, вы можете использовать JSON_SEARCH
, чтобы найти путь к значению, которое вы хотите удалить, а затем используйте JSON_REMOVE
, чтобы удалить его.Обратите внимание, что вам нужно проверить, что JSON_SEARCH
действительно находит значение, в противном случае JSON_REMOVE
приведет к аннулированию всего поля:
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Я сделал небольшую демонстрацию для dbfiddle .
Обратите внимание, что вы должны использовать JSON_UNQUOTE
в ответе от JSON_SEARCH
, чтобы сделать его действительным путем для JSON_REMOVE
.