Truy vấn tìm kiếm
Sử dụng câu lệnh truy vẫn MySqlSELECT * , COUNT(*) AS number_record
FROM users
GROUP BY name
HAVING number_record > 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
Check trùng 2 trường thông tin
Check 2 trường thông tin giống nhau và số lần xuất hiện
select su.id, t.*from shop_user sujoin (select shop_id, user_id, count(*) as qtyfrom shop_usergroup by shop_id, user_idhaving count(*) > 1) t on su.shop_id = t.shop_id and su.user_id = t.user_id
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
Hoặc dùng Select WHERE IN với ngày tạo trùng nhau:
DELETE FROM users WHERE id IN (SELECT idFROM usersGROUP BY created_atHAVING COUNT(id) > 1)
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)
Nhận xét
Đăng nhận xét