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

fjern dublerede rækker baseret på én kolonneværdi

Dette svarer til Gordon Linoffs forespørgsel, men uden underforespørgslen:

DELETE t1 FROM table t1
  JOIN table t2
  ON t2.refID = t1.refID
  AND t2.ID < t1.ID

Dette bruger en indre joinforbindelse til kun at slette rækker, hvor der er en anden række med samme refID men lavere ID.

Fordelen ved at undgå en underforespørgsel er at kunne bruge et indeks til søgningen. Denne forespørgsel burde fungere godt med et indeks med flere kolonner på refID + ID.



  1. Migration fra Oracle Database til MariaDB - A Deep Dive

  2. Indstilling af netværkstimeout for JDBC-forbindelse

  3. Mysql:Bestil efter like?

  4. Sådan fungerer LOAD_FILE() i MariaDB