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

Làm cách nào để xóa các mục trùng lặp?

Một số cách tiếp cận này có vẻ hơi phức tạp và tôi thường làm như sau:

Đã cho bảng table , muốn duy nhất nó trên (field1, field2) giữ hàng có trường max3:

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

Ví dụ:tôi có một bảng, user_accounts và tôi muốn thêm một ràng buộc duy nhất cho email, nhưng tôi có một số bản sao. Cũng nói rằng tôi muốn giữ một cái được tạo gần đây nhất (id tối đa trong số các bản sao).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Lưu ý - USING không phải là SQL tiêu chuẩn, nó là một phần mở rộng PostgreSQL (nhưng rất hữu ích), nhưng câu hỏi ban đầu đề cập cụ thể đến 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. Cách tốt nhất để chọn các hàng ngẫu nhiên PostgreSQL

  2. Điền nhiều trường 2many (odoo 8)

  3. @BatchSize là cách sử dụng thông minh hay ngu ngốc?

  4. Barman Cloud - Phần 1:WAL Archive

  5. Db khác nhau để thử nghiệm trong Django?