Xóa dữ liệu trùng lặp mysql
Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách loại bỏ các hàng trùng lặp trong cơ sở dữ liệu MySQL để giảm kích thước cơ sở dữ liệu và giúp tăng hiệu suất của máy chủ Show Trước khi tiếp tục, chúng tôi giả sử
GHI CHÚ. Nếu bạn cần cơ sở dữ liệu mẫu để thử các khái niệm được cung cấp trong hướng dẫn này, vui lòng xem xét cơ sở dữ liệu Sakila hoặc tải xuống bản sao của cơ sở dữ liệu được sử dụng trong hướng dẫn này Tài nguyên được cung cấp dưới đây Sử dụng cơ bảnTrước khi bắt đầu, chúng tôi sẽ cố tình tạo một bảng chứa các giá trị trùng lặp cho mục đích thử nghiệm. Các truy vấn SQL để thực hiện hành động này ở bên dưới SỬ DỤNG thế giới; Vui lòng sửa đổi truy vấn ở trên để phù hợp với nhu cầu của bạn. Bạn cũng nên đảm bảo rằng bạn đã tạo cơ sở dữ liệu (thế giới) để tránh lỗi Bây giờ, nếu chúng tôi lấy tất cả dữ liệu bên trong bảng và sắp xếp theo tên người dùng, chúng tôi sẽ thấy các bản sao mà chúng tôi có như được hiển thị mysql> sử dụng thế giới; Như bạn có thể thấy từ bảng trên, chúng tôi có hai giá trị trùng lặp làm cho cơ sở dữ liệu lớn hơn mà không có lý do và gây ra tốc độ chậm Bây giờ chúng ta hãy tìm hiểu cách chúng ta có thể xóa các giá trị này #1 – XÓA THAM GIAMột cách để loại bỏ các hàng trùng lặp trong cơ sở dữ liệu là sử dụng câu lệnh MySQL DELETE JOIN. Tuy nhiên, truy vấn sử dụng id để xóa các giá trị trùng lặp Ví dụ: để xóa các giá trị trùng lặp trong bảng người dùng ở trên, chúng ta có thể nhập XÓA bảng1 TỪ bảng người dùng 1 INNER THAM GIA bảng người dùng 2 WHERE bảng1. id < bảng2. id VÀ bảng1. email = bảng2. e-mail; Khi bạn thực hiện truy vấn ở trên, bạn sẽ xóa các giá trị trùng lặp như được hiển thị trong kết quả bên dưới mysql> XÓA bảng1 TỪ bảng người dùng1 INNER THAM GIA bảng người dùng2 WHERE bảng1. id < bảng2. id VÀ bảng1. email = bảng2. e-mail; #2 – Hàm Row_Number()Phương pháp thứ hai chúng ta có thể thực hiện là sử dụng hàm row_number() của MySQL. Chức năng này được hỗ trợ trong MySQL phiên bản 8 trở lên Nó hoạt động bằng cách gán một giá trị int tuần tự cho mỗi hàng, với các hàng chứa các giá trị trùng lặp nhận giá trị cao hơn 1 Để tìm hiểu thêm về chức năng này, hãy sử dụng tài nguyên được cung cấp bên dưới Xem xét truy vấn bên dưới trả về id của các hàng có giá trị trùng lặp CHỌN id TỪ (CHỌN id, ROW_NUMBER() QUÁ (PHẦN PHẦN THEO tên người dùng ĐẶT HÀNG THEO tên người dùng) NHƯ row_var TỪ người dùng) t1 WHERE row_var > 1; Khi bạn thực hiện truy vấn trên, bạn sẽ nhận được danh sách id như được hiển thị trong đầu ra bên dưới +----+ Nếu bạn muốn loại bỏ các giá trị, chỉ cần thay câu lệnh SELECT bằng câu lệnh DELETE như hình bên dưới XÓA KHỎI người dùng WHERE id IN (CHỌN id TỪ ( SELECT id, ROW_NUMBER() QUÁ (PHẦN PHẦN THEO tên người dùng ĐẶT HÀNG THEO tên người dùng) NHƯ row_var TỪ người dùng) t1 WHERE row_var > 1); Cuối cùng, bạn có thể xác minh rằng các giá trị trùng lặp đã bị xóa bằng cách sử dụng câu lệnh SELECT mysql> CHỌN * từ người dùng ĐẶT HÀNG THEO tên người dùng; Phần kết luậnTrong hướng dẫn này, chúng ta đã thảo luận về hai phương pháp loại bỏ các giá trị trùng lặp khỏi cơ sở dữ liệu. Cơ sở dữ liệu lớn, đặc biệt là những cơ sở dữ liệu được sử dụng phổ biến, có thể chứa nhiều giá trị trùng lặp từ nhập bên ngoài và các lỗi khác. Do đó, cần phải tiếp tục xóa các giá trị trùng lặp để đảm bảo rằng các ứng dụng hoạt động tối ưu Làm cách nào để xóa các hàng trùng lặp trong MySQL mà không cần sử dụng bảng tạm thời?Truy vấn SQL để loại bỏ các hàng trùng lặp
. tên = e2. tên VÀ e1. id > e2. Tôi;
Làm cách nào để xóa các bản ghi trùng lặp?Nếu một bảng có các hàng trùng lặp, chúng ta có thể xóa nó bằng cách sử dụng câu lệnh DELETE. Trong trường hợp, chúng tôi có một cột, đây không phải là một phần của nhóm được sử dụng để đánh giá các bản ghi trùng lặp trong bảng |