Jeg tror ikke, du kan gøre dette effektivt i SQL. En langsom måde at gøre det på er noget som:
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;
En bedre måde ville være en lagret procedure eller et eksternt script. Vælg alle rækker fra tabellen sorteret efter phone
og foretag grupperingen/fletningen/sletningen manuelt (gentag resultaterne, sammenlign med phone
værdi fra den forrige række, hvis den er anderledes, har du en ny gruppe osv.). At skrive lagrede procedurer i MySQL er dog smertefuldt, så jeg har ikke tænkt mig at skrive koden for dig. :)