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

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

Có, giả sử bạn có một trường ID duy nhất, bạn có thể xóa tất cả các bản ghi giống nhau ngoại trừ ID, nhưng không có "ID tối thiểu" cho nhóm giá trị của chúng.

Truy vấn mẫu:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Ghi chú:

  • Tôi đã thoải mái chọn "Bảng" và "ID" làm tên đại diện
  • Danh sách các trường ("Field1, Field2, ...") phải bao gồm tất cả các trường ngoại trừ ID
  • Đây có thể là một truy vấn chậm tùy thuộc vào số lượng trường và hàng, tuy nhiên, tôi hy vọng nó sẽ ổn so với các lựa chọn thay thế

CHỈNH SỬA:Trong trường hợp bạn không có chỉ mục duy nhất, đề xuất của tôi là chỉ cần thêm chỉ mục duy nhất tự động tăng dần. Chủ yếu là vì thiết kế đẹp, nhưng cũng vì nó sẽ cho phép bạn chạy truy vấn ở trên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm kiếm không phân biệt dấu phụ trong MySQL (dấu tiếng Tây Ban Nha)

  2. MySQL NOT IN truy vấn

  3. Cách quản lý cơ sở dữ liệu MySQL, người dùng và bảng từ dòng lệnh

  4. Làm thế nào để sao lưu một bảng trong cơ sở dữ liệu MySQL?

  5. Làm cách nào để đếm tất cả các hàng khi sử dụng SELECT với LIMIT trong truy vấn MySQL?