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

Изтриване на дублиращи се редове от таблицата

Можете да опитате това да се изпълнява няколко пъти :

delete from mytable where id in (
    select max(id)
      from mytable
     group by name
    having count(1) > 1
);

Където няколко пъти е равен на максималния брой повторения, които имате в name колона.

В противен случай можете да опитате тази по-сложна заявка:

delete from mytable where id in (
    select id from mytable
    except 
    (
    select min(id)
      from mytable
     group by name
    having count(1) > 1
    union all
    select min(id)
      from mytable
     group by name
    having count(1) = 1
    )
);

Изпълнението на тази заявка само веднъж трябва да изтрие всичко необходимо. Все пак не съм го пробвал...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Компилиране на libpq с iOS SDK 4.2

  2. Проверете дали Postgresql слуша

  3. Дърво на интервали за съхранение и заявки в PostgreSQL

  4. Bash скрипт за инсталиране на PostgreSQL - Не работи

  5. PostgreSQL:Автоматизирано архивиране в Windows