Truy vấn tìm kiếm
Tìm trong bảng User những bản ghi trùng email:SELECT email, COUNT(*) AS total FROM user GROUP BY email HAVING COUNT(*) > 1;
Hiện thị đầy đủ các bản ghi trùng lặp
SELECT *FROM user u1WHERE EXISTS (SELECT 1FROM user u2WHERE u1.email = u2.emailAND u1.id > u2.id);
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)
Hoặc xóa dữ liệu trùng lặp shop_id, user_id trong bảng shop_user
DELETE t1 FROM shop_user t1INNER JOIN shop_user t2WHEREt1.id > t2.id ANDt1.shop_id = t2.shop_id ANDt1.user_id = t2.user_id;



Nhận xét
Đăng nhận xét