Header Ads Widget

Tìm dữ liệu bị trùng lặp trong câu lệnh SQL

Dữ liệu lặp lại (duplicate) thường gặp khi sử dụng 1 trường dữ liệu nào đó là khóa

Truy vấn tìm kiếm

Sử dụng câu lệnh truy vẫn MySql
SELECT * , COUNT(*) AS number_record
FROM users
GROUP BY name
HAVING number_record > 1

1, Hiển thị các dữ liệu trùng nhau

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

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)

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. 
DELETE n1
FROM users n1, users n2
WHERE n1.name = n2.name AND n1.id > n2.id


Xóa những record trùng nhau trong MySQL

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

Xoá tất cả những bản ghi trùng nhau
DELETE FROM users
USING users, users AS virtual_users
WHERE (NOT users.id = virtual_users.id) AND (users.name = virtual_users.name)


Xóa những record trùng nhau trong MySQL

Nhận xét