Mysql
 sql >> Base de données >  >> RDS >> Mysql

Fusionner puis supprimer les entrées en double

Je ne pense pas que vous puissiez le faire efficacement en SQL. Une façon lente de le faire est quelque chose comme :

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;

Un meilleur moyen serait une procédure stockée ou un script externe. Sélectionnez toutes les lignes du tableau classées par phone et faire le regroupement/fusionner/supprimer manuellement (itérer sur les résultats, comparer au phone valeur de la ligne précédente, si elle est différente, vous avez un nouveau groupe, etc.). L'écriture de procédures stockées dans MySQL est cependant pénible, donc je ne vais pas écrire le code pour vous. :)