Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So finden Sie Duplikate in MySQL

Gibt alle Datensätze mit Dups zurück:

SELECT theTable.*
FROM theTable
INNER JOIN (
  SELECT link, size
  FROM theTable 
  GROUP BY link, size
  HAVING count(ID) > 1
) dups ON theTable.link = dups.link AND theTable.size = dups.size

Ich mag die Unterabfrage b/c Ich kann Dinge tun wie alle außer der ersten oder letzten auswählen. (sehr einfach, sich dann in eine Löschabfrage zu verwandeln).

Beispiel:Wählen Sie alle doppelten Datensätze AUSSER demjenigen mit der maximalen ID:

SELECT theTable.*
FROM theTable
INNER JOIN (
  SELECT link, size, max(ID) as maxID
  FROM theTable 
  GROUP BY link, size
  HAVING count(ID) > 1
) dups ON theTable.link = dups.link 
          AND theTable.size = dups.size 
          AND theTable.ID <> dups.maxID