SQL2005中如何删除某字段重复的数据
依下图Students表内容为例,Id_P列不同,Id_P类型为int,自增字段
(Name,Address,City列值重复)
SELECT Name, Address, City, COUNT(*) AS CountStudents
FROM Students
GROUP BY Name, Address, City
HAVING (COUNT(*) > 1)
查询结果如下图:
通过查询结果可以看出Name,Address,City列值重复的有哪些及重复次数
SELECT MAX(Id_P) AS MAXId_P
FROM Students
GROUP BY Name, Address, City
查询结果如下图:
依Name, Address, City分组查询Id_P最大值,这样查询的结果就不包含重复的Id_P值
SELECT *
FROM Students
WHERE (Id_P IN
(SELECT MAX(Id_P) AS MAXId_P
FROM Students AS Students_1
GROUP BY Name, Address, City))
查询结果如下图:
查询结果没有重复的数据,可以把MAX(Id_P)改成MIN(Id_P)
DELETE FROM Students
WHERE (Id_P NOT IN
(SELECT MAX(Id_P) AS MAXId_P
FROM Students AS Students_1
GROUP BY Name, Address, City))
删除重复的数据,注意Id_P后面"NOT IN"