Se você sabe que nunca há duplicatas no array, você pode usar
JSON_SEARCH
para encontrar o caminho para o valor que você deseja excluir e, em seguida, use JSON_REMOVE
para removê-lo. Observe que você precisa verificar se JSON_SEARCH
realmente encontra um valor, caso contrário JSON_REMOVE
anulará todo o campo:UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Fiz uma pequena demonstração no dbfiddle .
Observe que você deve usar
JSON_UNQUOTE
na resposta de JSON_SEARCH
para torná-lo um caminho válido para JSON_REMOVE
.