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

Odstranění duplicitních řádků z tabulky

Ano, za předpokladu, že máte jedinečné pole ID, můžete odstranit všechny záznamy, které jsou stejné kromě ID, ale nemají "minimální ID" pro svou skupinu hodnot.

Příklad dotazu:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Poznámky:

  • Jako reprezentativní názvy jsem volně zvolil „Tabulka“ a „ID“
  • Seznam polí ("Pole1, Pole2, ...") by měl obsahovat všechna pole kromě ID
  • Toto může být pomalý dotaz v závislosti na počtu polí a řádků, nicméně očekávám, že ve srovnání s alternativami bude v pořádku

EDIT:V případě, že nemáte jedinečný index, doporučuji jednoduše přidat automatický přírůstkový jedinečný index. Především proto, že je to dobrý design, ale také proto, že vám umožní spustit dotaz výše.



  1. Jak spustit mysqladmin flush-hosts na Amazon RDS

  2. Implementace nastavení více datových center pro PostgreSQL – část druhá

  3. Funkce MySQL TAN() – Vrátí tečnu hodnoty v MySQL

  4. Zjistěte, na který oddíl by byla daná hodnota namapována v SQL Server (T-SQL)