Nie sądzę, że można to zrobić efektywnie w SQL. Jednym powolnym sposobem na zrobienie tego jest coś takiego:
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;
Lepszym sposobem byłaby procedura składowana lub skrypt zewnętrzny. Wybierz wszystkie wiersze z tabeli uporządkowane według phone
i wykonaj grupowanie/scalanie/usuwanie ręcznie (przejrzyj wyniki, porównaj z phone
wartość z poprzedniego wiersza, jeśli jest inna, masz nową grupę itp.). Pisanie procedur składowanych w MySQL jest jednak bolesne, więc nie zamierzam pisać kodu za Ciebie. :)