PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изтрия дублиращи се записи?

Някои от тези подходи изглеждат малко сложни и обикновено правя това като:

Дадена таблица table , искате да го уникнете на (поле1, поле2), като запазите реда с максимално поле3:

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

Например, имам таблица user_accounts , и искам да добавя уникално ограничение за имейл, но имам някои дубликати. Кажете също, че искам да запазя най-скоро създадения (максимален идентификатор сред дубликатите).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Забележка – USING не е стандартен SQL, това е разширение на PostgreSQL (но много полезно), но в оригиналния въпрос специално се споменава PostgreSQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да емулирам вмъкване игнориране и при актуализиране на дублиран ключ (sql обединяване) с postgresql?

  2. pg_dump postgres база данни от отдалечен сървър, когато порт 5432 е блокиран

  3. Rails 4 LIKE заявка - ActiveRecord добавя кавички

  4. Защо имаме нужда от посредници на съобщения като RabbitMQ върху база данни като PostgreSQL?

  5. Търсене в пълен текст от PostgreSQL 8.3