sql >> Database >  >> RDS >> Mysql

Samenvoegen en vervolgens dubbele vermeldingen verwijderen

Ik denk niet dat je dit in SQL efficiënt kunt doen. Een langzame manier om het te doen is zoiets als:

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;

Een betere manier zou een opgeslagen procedure of een extern script zijn. Selecteer alle rijen uit de tabel gerangschikt op phone en doe het groeperen/samenvoegen/verwijderen handmatig (herhaal de resultaten, vergelijk met de phone waarde uit de vorige rij, als deze anders is, hebt u een nieuwe groep, enz.). Het schrijven van opgeslagen procedures in MySQL is echter pijnlijk, dus ik ga de code niet voor je schrijven. :)



  1. Wat is PDO, hoe is het gerelateerd aan SQL-injectie en waarom zou ik dit gebruiken?

  2. Wanneer geclusterde of niet-geclusterde indexen gebruiken in SQL Server?

  3. HOUR() Voorbeelden – MySQL

  4. PostgreSQL-equivalent van MySQL-geheugentabellen?