sql >> Databasteknik >  >> RDS >> Mysql

Hur man tar bort dubbletter av rader från en MySQL-tabell

DELETE DupRows.*
FROM MyTable AS DupRows
   INNER JOIN (
      SELECT MIN(ID) AS minId, col1, col2
      FROM MyTable
      GROUP BY col1, col2
      HAVING COUNT(*) > 1
   ) AS SaveRows ON SaveRows.col1 = DupRows.col1 AND SaveRows.col2 = DupRows.col2
      AND SaveRows.minId <> DupRows.ID;

Naturligtvis måste du utöka col1, col2 på alla tre ställena till alla kolumner.

Edit:Jag tog precis det här ur ett skript jag behåller och testade igen, det körs i MySQL.



  1. Syftet med att använda olika typer av PL/SQL-samlingar i Oracle

  2. Postgresql rekursiv självanslutning

  3. Lagra filer i SQL Server

  4. JSON_ARRAY_INSERT() – Infoga värden i en JSON-array i MySQL