Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Doppelte Einträge zusammenführen und dann löschen

Ich glaube nicht, dass Sie dies in SQL effizient tun können. Ein langsamer Weg, dies zu tun, ist etwa:

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;

Ein besserer Weg wäre eine gespeicherte Prozedur oder ein externes Skript. Wählen Sie alle Zeilen aus der Tabelle sortiert nach phone aus und das Gruppieren/Zusammenführen/Löschen manuell durchführen (die Ergebnisse durchlaufen, mit dem phone vergleichen Wert aus der vorherigen Zeile, wenn er anders ist, haben Sie eine neue Gruppe usw.). Das Schreiben gespeicherter Prozeduren in MySQL ist jedoch mühsam, daher werde ich den Code nicht für Sie schreiben. :)