sql >> Databáze >  >> RDS >> PostgreSQL

Jak odstranit duplicitní záznamy?

Některé z těchto přístupů se zdají trochu komplikované a já to obecně dělám takto:

Daná tabulka table , chcete, aby byl jedinečný pro (pole1, pole2) a ponechte řádek s maximální hodnotou pole3:

DELETE FROM table USING table alias 
  WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
    table.max_field < alias.max_field

Mám například tabulku user_accounts a chci přidat jedinečné omezení na e-mail, ale mám nějaké duplikáty. Řekněte také, že si chci ponechat poslední vytvořený (maximální ID mezi duplikáty).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Poznámka – USING není standardní SQL, je to rozšíření PostgreSQL (ale velmi užitečné), ale původní otázka konkrétně zmiňuje PostgreSQL.


  1. jak použít dbms_scheduler ke spuštění úlohy každých 30 minut

  2. DATE_ADD() Příklady – MySQL

  3. Jak provést uloženou proceduru v MySQL Workbench

  4. Poslechněte si epizodu 2 podcastu Microsoft Access