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

Xóa các hàng trùng lặp trong cơ sở dữ liệu MySQL

Tôi sẽ làm theo cách sau:

  1. Tạo một bảng tạm thời từ bảng hiện có của bạn:

    CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
    
  2. Điền vào bảng tạm thời chỉ với các bản ghi bạn muốn:

    INSERT INTO data_to_keep
    SELECT DISTINCT * FROM table_with_dupes_in_it
    
  3. Làm trống bảng

    TRUNCATE TABLE table_with_dupes_in_it
    
  4. Trả dữ liệu từ bảng tạm thời về bảng ban đầu

    INSERT INTO table_with_dupes_in_it
    SELECT * FROM data_to_keep;
    
  5. Dọn dẹp

    DROP TEMPORARY TABLE data_to_keep
    

Hãy lưu ý rằng điều này có thể ngốn một lượng lớn bộ nhớ và / hoặc dung lượng lưu trữ nếu bảng được đề cập là một bảng lớn. Nếu đó là một bảng lớn, tôi sẽ có xu hướng sử dụng bảng thực thay vì bảng tạm thời để không chiếm quá nhiều bộ nhớ trên máy chủ DB của bạn.

CHỈNH SỬA ĐỂ THÊM:

Nếu bạn chỉ lo lắng về lỗi sai một phần (các hàng chỉ một số dữ liệu giống với dữ liệu đã nhập trước đó) thì bạn sẽ muốn sử dụng GROUP BY. Khi bạn sử dụng GROUP BY, bạn có thể giới hạn MySQL chỉ trả về một hàng có chứa dữ liệu nhất định thay vì tất cả chúng.

SELECT *
FROM table
GROUP BY column_name

Bạn cũng nên cân nhắc sử dụng các chỉ mục DUY NHẤT trên các cột bạn muốn để không chứa dữ liệu trùng lặp, điều này sẽ ngăn người dùng chèn dữ liệu trùng lặp ngay từ đầu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trong PHP, cách hiển thị nội dung mảng trong bảng

  2. Làm cách nào để bạn nhận được đầu ra có định dạng bảng từ MySQL ở chế độ không tương tác?

  3. Cách sử dụng SUBSTRING () trong MySQL

  4. Truy vấn nâng cao (?) VÀ / HOẶC

  5. MySQL - Perl:Cách lấy mảng mã zip trong phạm vi x dặm của mã zip đã gửi trong ví dụ Perl