Nếu bạn biết không bao giờ có bản sao trong mảng, bạn có thể sử dụng JSON_SEARCH để tìm đường dẫn đến giá trị bạn muốn xóa, sau đó sử dụng JSON_REMOVE Để loại bỏ nó. Lưu ý rằng bạn cần kiểm tra JSON_SEARCH thực sự tìm thấy một giá trị, nếu không thì JSON_REMOVE sẽ vô hiệu hóa toàn bộ trường:
UPDATE waitinglist
SET new = JSON_REMOVE(new, JSON_UNQUOTE(JSON_SEARCH(new, 'one', 'orange')))
WHERE JSON_SEARCH(new, 'one', 'orange') IS NOT NULL
Tôi đã tạo một bản nhỏ bản trình diễn trên dbfiddle .
Lưu ý rằng bạn phải sử dụng JSON_UNQUOTE về phản hồi từ JSON_SEARCH để biến nó thành một đường dẫn hợp lệ cho JSON_REMOVE .