sql >> Database >  >> RDS >> Mysql

Hoe duplicaten te vinden in MySQL

Zal alle records retourneren die dups hebben:

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

Ik vind de subquery leuk, omdat ik dingen kan doen zoals alles selecteren behalve de eerste of de laatste. (heel gemakkelijk om dan in een verwijderquery te veranderen).

Voorbeeld:selecteer alle dubbele records BEHALVE degene met de maximale 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


  1. MYSQLI voorbereide instructie bind_param types werkt niet

  2. Prestaties van MySQL tellen rijen

  3. BDE vs ADO in Delphi

  4. Schakel het SA-account in SQL Server uit (T-SQL-voorbeeld)