sql >> Databasteknik >  >> RDS >> Mysql

ta bort dubbletter av rader baserat på ett kolumnvärde

Detta liknar Gordon Linoffs fråga, men utan underfrågan:

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

Detta använder en inre koppling för att bara ta bort rader där det finns en annan rad med samma refID men lägre ID.

Fördelen med att undvika en underfråga är att kunna använda ett index för sökningen. Den här frågan bör fungera bra med ett index med flera kolumner på refID + ID.



  1. C# MySql SKAPA ANVÄNDARE

  2. Hur man använder Kör omedelbart med INTO-klausul i Oracle Database

  3. MySQL:Bestäm tabellens primärnyckel dynamiskt

  4. Gruppera rader med hjälp av grupp efter klausul i MySQL