sql >> Databáze >  >> RDS >> Mysql

Jak najít duplikáty v MySQL

Vrátí všechny záznamy, které mají 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

Líbí se mi poddotaz b/c mohu dělat věci jako vybrat vše kromě prvního nebo posledního. (velmi snadno se pak změní na dotaz pro odstranění).

Příklad:vyberte všechny duplicitní záznamy KROMĚ záznamu s maximálním 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. Jak najít nastavení ANSI_NULLS databáze v SQL Server (T-SQL)

  2. PostgreSQL Load Balancing &Vylepšení ProxySQL - ClusterControl 1.5

  3. Node Mysql asynchronní více dotazů

  4. Vytvoření systému zasílání zpráv v DB (zejména MySQL)