文章目录
前言
Oracle 19c版本
在oracle中,可以利用count()函数配合select查询语句来查询重复的数据,语法为 :
select userCode from user group by userCode having count(userCode)>1
1、查找表中多余的重复记录,重复记录是根据单个字段(userCode)来判断
SELECT *
FROM user
WHERE userCode IN (
SELECT userCode
FROM user
GROUP BY userCode
HAVING count(userCode) > 1
);
2、删除表中多余的重复记录,重复记录是根据单个字段(userCode)来判断,只留有rowid最小的记录
DELETE FROM user
WHERE userCode IN (
SELECT userCode
FROM user
GROUP BY userCode
HAVING count(peopleId) > 1
)
AND rowid NOT IN (
SELECT min(rowid)
FROM user
GROUP BY userCode
HAVING count(userCode) > 1
);
3、查找表中多余的重复记录(多个字段)
SELECT *
FROM user a
WHERE (a.userCode, a.userName) IN (
SELECT userCode, userName
FROM user
GROUP BY userCode, userName
HAVING count(*) > 1
);
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
DELETE FROM user a
WHERE (a.userCode, a.userName) IN (
SELECT userCode, userName
FROM user
GROUP BY userCode, userName
HAVING count(*) > 1
)
AND rowid NOT IN (
SELECT min(rowid)
FROM user
GROUP BY userCode, userName
HAVING count(*) > 1
);
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
SELECT *
FROM user a
WHERE (a.userCode, a.userName) IN (
SELECT userCode, userName
FROM user
GROUP BY userCode, userName
HAVING count(*) > 1
)
AND rowid NOT IN (
SELECT min(rowid)
FROM user
GROUP BY userCode, userName
HAVING count(*) > 1
);
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、点赞
、收藏
、评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!