Tìm và xóa dữ liệu trùng lặp trong mysql

Trong lúc làm việc với mysql, vô tình hoặc do 1 vấn đề gì đó bạn làm trùng lặp dữ liệu lên rất nhiều lần mà những dữ liệu đó không cần thiết. Bạn muốn show dữ liệu đó ra xem hoặc muốn xóa các dữ liệu trùng lặp, chỉ giữ lại 1 cái duy nhất, việc này không quá khó, bạn có thể chỉ cần chạy vài câu lệnh đơn giản cũng thực hiện được rồi:

Ta ví dụ có bảng users gồm name location:

mysql1

Còn đây là dữ liệu của bảng users:

mysql21. Hiển thị dữ liệu trùng lặp trong mysql

Chúng ta sử dụng câu lệnh truy vấn msql

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 sẽ biết được số lượng những record trùng lặp.

mysql3

 

Hiển thị đầy đủ các bản ghi trùng lặp:

SELECT *
FROM users
WHERE name IN (
SELECT name
FROM users
GROUP BY name
HAVING COUNT(name) > 1
)
ORDER BY name

mysql4

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

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ó 2 record trùng nhau thì câu lệnh sẽ xóa 1 record và giữ lại 1 record.

DELETE n1
FROM users n1, users n2
WHERE n1.name = n2.name AND n1.id > n2.id

anh3

3. Xóa hoàn toàn các dữ liệu trùng nhau ra khỏi Database

Xóa hết tất cả ta dùng câu lệnh sau:

DELETE FROM users
USING users, users AS virtual_users
WHERE (NOT users.id = virtual_users.id) AND (users.name = virtual_users.name)

anh4
Chúc các bạn thành công. Có gì thắc mắc cứ comment ở khung bên dưới nhé.

Tìm và xóa dữ liệu trùng lặp trong mysql
5 (100%) 2 votes

Từ khóa tìm kiếm:

  • cau lenh trong sql xoa bot ban ghi trung lap
  • xóa dữ liệu trùng trong sql
  • xoa du lieu trung voi mysqli

Bình luận

1 Bình luận on "Tìm và xóa dữ liệu trùng lặp trong mysql"

Thông báo
avatar
Sắp xếp:   Mới nhất | Cũ nhất | Bình chọn nhiều
Tung
Guest

Thx chú Long nhé!

wpDiscuz