Tìm và loại bỏ dữ liệu trùng lặp trong MySQL

Đầu tiên tôi tạo ra một bảng users đơn giản chứa thông tin người dùng gồm name và location.

Tìm dữ liệu trùng lặp trong MySQL

Tiếp theo tôi chèn một vài dữ liệu mẫu vào bảng users đó.

Tìm dữ liệu trùng lặp trong MySQL

1. Bây giờ là tới nội dung chính của bài viết hôm nay.

Đó là tôi sẽ sử dụng câu truy vấn để tìm những dữ liệu trùng lặp nhau trong MySQL.

SELECT * , COUNT(*) AS number_record
FROM users
GROUP BY name
HAVING number_record > 1
 
Thật ra câu lệnh tìm dữ liệu trùng lặp cũng không có gì phức tạp lắm, nếu bạn thường sử dụng các lệnh MySQL để truy vấn dữ liệu thì chắc hẳn đã biết đến lệnh HAVING và GROUP BY  vốn được sử dụng trong các trường hợp liên quan đến tập hợp dữ liệu. Trong trường hợp này chúng ta sẽ dùng lệnh GROUP BY để nhóm các record lại, sau đó dùng lệnh HAVING để lọc ra những record trùng lặp có số lượng lớn hơn 1.

Sau khi truy vấn, tôi đã có được kết quả mong muốn và biết được số lượng những record trùng lặp.

Tìm những record trùng nhau trong MySQL

2, Xóa các dữ liệu trùng nhau (giữ lại 1 record)

Để xóa những record trùng nhau trong Database lớn thì chúng ta không thể nào thực hiện bằng tay được, thay vào đó chúng ta nên dùng các câu lệnh MySQL dưới đây để xóa nhằm tiết kiệm thời gian và không bỏ sót dữ liệu.

Câu lệnh dưới đây sẽ xóa những record trùng nhau nhưng giữ lại 1 record trong số đó. Giả sử trong Database có 3 record trùng nhau thì câu lệnh sẽ xóa 2 record và giữ lại 1 record.