sql >> Database teknologi >  >> RDS >> Mysql

Sådan finder du dubletter i MySQL

Vil returnere alle poster, der har dups:

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

Jeg kan godt lide underforespørgslen b/c. Jeg kan gøre ting som at vælge alt undtagen den første eller sidste. (meget let at omdanne til en sletteforespørgsel).

Eksempel:vælg alle duplikerede poster UNDTAGET den med max 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. Sådan bestemmes feltværdien, som ikke kan konverteres til (decimal, float,int) i SQL Server

  2. Fejl ved installation af Mysql2 gem-10.6 Server

  3. Design af fakturatabel

  4. Unik begrænsning på kombination af to kolonner?