Om du vet att det aldrig finns dubbletter i arrayen kan du använda JSON_SEARCH
för att hitta sökvägen till värdet du vill ta bort och använd sedan JSON_REMOVE
för att ta bort den. Observera att du måste kontrollera att JSON_SEARCH
hittar faktiskt ett värde, annars JSON_REMOVE
kommer att annullera hela fältet:
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Jag har gjort en liten demo på dbfiddle .
Observera att du måste använda JSON_UNQUOTE
på svaret från JSON_SEARCH
för att göra det till en giltig sökväg för JSON_REMOVE
.