sql >> Databasteknik >  >> RDS >> Mysql

Hur man hittar dubbletter i MySQL

Kommer att returnera alla poster som 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

Jag gillar underfrågan b/c Jag kan göra saker som att välja alla utom den första eller sista. (mycket lätt att förvandla till en raderingsfråga då).

Exempel:välj alla dubblettposter UTOM 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. Postgres:hur rundar man en tidsstämpel uppåt eller nedåt till närmaste minut?

  2. Hur dumpar man mysql-tabellstruktur utan data med en SQL-fråga?

  3. Pivotera på flera kolumner med Tablefunc

  4. Felkod 1005, SQL-tillstånd HY000:Kan inte skapa tabell felnr:150