sql >> Databasteknik >  >> RDS >> Mysql

Slå samman och ta sedan bort dubbletter av poster

Jag tror inte att du kan göra detta i SQL effektivt. Ett långsamt sätt att göra det på är något i stil med:

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;

Ett bättre sätt skulle vara en lagrad procedur eller ett externt skript. Välj alla rader i tabellen sorterade efter phone och gör grupperingen/sammanfogningen/raderingen manuellt (iterera över resultaten, jämför med phone värde från föregående rad, om det är annorlunda har du en ny grupp, etc.). Att skriva lagrade procedurer i MySQL är dock smärtsamt, så jag tänker inte skriva koden åt dig. :)



  1. Symfony2:Lista städer efter land

  2. Hur man skapar en sammansatt primär nyckel i SQL Server (T-SQL-exempel)

  3. Aktivitets- och bakgrundstjänst Tillgång till SQLite-databasen

  4. Vad är skillnaden mellan INNER JOIN, LEFT JOIN, RIGHT JOIN och FULL JOIN?