SQL---查找+删除重复记录

查找重复记录:

 

1,重复记录根据单个字段来判断
在People表中,a列中的值重复即算重复记录:
SELECT a, COUNT(*)
FROM People
GROUP BY a
HAVING COUNT(*) > 1

 

2,重复记录根据多个字段来判断

在People表中,a列和b列中的值都重复即算重复记录:

SELECT a, b, COUNT(*)
FROM People
GROUP BY a, b
HAVING COUNT(*) > 1

 

在People表中,a列或b列中的值有一个重复即算重复记录:

SELECT a AS col, COUNT(*)
FROM People
GROUP BY a
HAVING COUNT(*) > 1
UNION ALL
SELECT b AS col, COUNT(*)
FROM People
GROUP BY b
HAVING COUNT(*) > 1

 

删除重复记录:

 

删除Peope表中重复的记录,只保留最小的id对应的记录:

1,把重复记录中不需要删除的记录创建临时表;2,删除原表中的记录

CREATE TEMPORARY TABLE to_delete (id INT NOT NULL, a VARCHAR NOT NULL);

INSERT INTO to_delete(id, a)
    SELECT MIN(id), a FROM People GROUP BY a HAVING COUNT(*) > 1
DELETE FROM People
WHERE EXISITS (SELECT * FROM to_delete
         WHERE to_delete.a = People.a AND to_delete.id != People.id)

 

posted @ 2021-01-14 13:04  HuZihu  阅读(187)  评论(0编辑  收藏  举报