PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Xóa các hàng trùng lặp khỏi bảng

Bạn có thể thử chạy điều này nhiều lần :

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

Ở đâu nhiều lần bằng số lần lặp lại tối đa mà bạn có trong name cột.

Nếu không, bạn có thể thử truy vấn phức tạp hơn sau:

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

Chạy truy vấn này một lần duy nhất sẽ xóa tất cả những gì bạn cần. Tuy nhiên vẫn chưa thử ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. org.postgresql.util.PSQLException:FATAL:xin lỗi, đã có quá nhiều khách hàng

  2. Phương thức org.postgresql.jdbc4.Jdbc4Connection.isValid (int) chưa được triển khai

  3. Ánh xạ kiểu nối tiếp PostgreSQL với chú thích Hibernate

  4. Postgres SSL SYSCALL lỗi:Đã phát hiện thấy EOF với python và psycopg

  5. Nhận số ngày nhất định trong tuần (cuối tuần) từ khoảng thời gian trong PostgreSQL