sql >> Database teknologi >  >> RDS >> Mysql

Flet og Slet derefter duplikerede poster

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. :)



  1. dødvande i Oracle

  2. MySQL Vælg sidste måneds data efter current_timestamp

  3. Forudbestilling af en GROUP BY-erklæring

  4. CROSS JOIN vs INNER JOIN i SQL