Tôi không nghĩ rằng bạn có thể làm điều này trong SQL một cách hiệu quả. Một cách chậm để làm điều đó là một cái gì đó như:
CREATE TEMPORARY TABLE tmp_table (...);
INSERT INTO tmp_table SELECT phone, max(rating) FROM table GROUP BY phone;
TRUNCATE table;
INSERT INTO table SELECT * FROM tmp_table;
Một cách tốt hơn sẽ là một thủ tục được lưu trữ hoặc một tập lệnh bên ngoài. Chọn tất cả các hàng từ bảng được sắp xếp theo phone
và thực hiện việc nhóm / hợp nhất / xóa theo cách thủ công (lặp lại các kết quả, so sánh với phone
giá trị từ hàng trước đó, nếu nó khác, bạn có một nhóm mới, v.v.). Tuy nhiên, việc viết các thủ tục được lưu trữ trong MySQL rất khó khăn, vì vậy tôi sẽ không viết mã cho bạn. :)