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

Cách tốt nhất để xóa các giá trị trùng lặp khỏi Bảng MySQL là gì?

Trước tiên, bạn có thể thử thêm chỉ mục vào các trường ProgramName và CustID nếu bạn chưa có.

Khử trùng lặp

Bạn có thể nhóm các bản ghi của mình để xác định lỗi giả mạo và khi bạn đang làm điều đó, hãy lấy giá trị ID tối thiểu cho mỗi nhóm. Sau đó, chỉ cần xóa tất cả các bản ghi có ID không phải là một trong những MinID.

Phương pháp trong mệnh đề

delete from
 ProgramsList
where
 id not in 
    (select min(id) as MinID
      from ProgramsList
      group by ProgramName, CustID) 

Phương pháp tham gia

Bạn có thể phải chạy điều này nhiều lần, nếu có nhiều thành viên trong mỗi nhóm.

DELETE P
FROM ProgramsList as P
INNER JOIN 
    (select count(*) as Count, max(id) as MaxID
     from ProgramsList
     group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2

Một số người gặp vấn đề về hiệu suất với Điều khoản trong, một số thì không. Nó phụ thuộc rất nhiều vào các chỉ số của bạn và như vậy. Nếu một cái quá chậm, hãy thử cái kia.

Liên quan: https://stackoverflow.com/a/4192849/127880



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Workbench Alternatives - ClusterControl Database User Management

  2. Việc thay đổi loại trường mysql từ INT thành VARCHAR sẽ ảnh hưởng như thế nào đến dữ liệu được lưu trữ trước đó dưới dạng INT

  3. mysql thoát dấu ngoặc kép và đơn

  4. Chọn các hàng ngẫu nhiên với MySQL

  5. Chèn Mysql Dữ liệu với Một Giá trị từ một bảng khác