Se sai che non ci sono mai duplicati nell'array, puoi usare JSON_SEARCH
per trovare il percorso del valore che desideri eliminare, quindi utilizza JSON_REMOVE
per rimuoverlo. Nota che devi controllare che JSON_SEARCH
trova effettivamente un valore, altrimenti JSON_REMOVE
annullerà l'intero campo:
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Ho realizzato una piccola demo su dbfiddle .
Nota che devi usare JSON_UNQUOTE
sulla risposta di JSON_SEARCH
per renderlo un percorso valido per JSON_REMOVE
.