Si vous savez qu'il n'y a jamais de doublons dans le tableau, vous pouvez utiliser JSON_SEARCH pour trouver le chemin d'accès à la valeur que vous souhaitez supprimer, puis utilisez JSON_REMOVE pour le supprimer. Notez que vous devez vérifier que JSON_SEARCH trouve réellement une valeur, sinon JSON_REMOVE annulera tout le champ :
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
J'ai fait une petite démo sur dbfiddle .
Notez que vous devez utiliser JSON_UNQUOTE sur la réponse de JSON_SEARCH pour en faire un chemin valide pour JSON_REMOVE .