Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment trouver des doublons dans MySQL

Renverra tous les enregistrements qui ont des doublons :

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

J'aime la sous-requête b/c, je peux faire des choses comme tout sélectionner sauf le premier ou le dernier. (très facile à transformer en requête de suppression alors).

Exemple :sélectionnez tous les enregistrements en double SAUF celui avec l'ID max :

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