Nemyslím si, že to můžete udělat v SQL efektivně. Jeden pomalý způsob, jak to udělat, je něco jako:
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;
Lepším způsobem by byla uložená procedura nebo externí skript. Vyberte všechny řádky z tabulky seřazené podle phone
a proveďte seskupení/sloučení/odstranění ručně (opakujte výsledky, porovnejte s phone
hodnota z předchozího řádku, pokud se liší, máte novou skupinu atd.). Psaní uložených procedur v MySQL je však bolestivé, takže kód za vás psát nebudu. :)