PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Usuń zduplikowane wiersze z tabeli

Możesz wypróbować to bieganie wiele razy :

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

Gdzie wiele razy równa się maksymalnej liczbie powtórzeń w name kolumna.

W przeciwnym razie możesz wypróbować to bardziej złożone zapytanie:

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
    )
);

Uruchomienie tego zapytania tylko raz powinno usunąć wszystko, czego potrzebujesz. Nie próbowałem tego...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konfiguracja Amazon Elastic Beanstalk z PostGIS

  2. Funkcje daty i czasu PostgreSQL

  3. Włączenie LOOP do SQL

  4. System rekomendacji aplikacji księgarni

  5. Gorutyny zablokowały pulę połączeń