永发信息网

Oracle删除重复记录只保留一条数据的几种方法

答案:2  悬赏:20  手机版
解决时间 2021-12-16 23:09
  • 提问者网友:任人宰割
  • 2021-12-16 09:58
Oracle删除重复记录只保留一条数据的几种方法
最佳答案
  • 五星知识达人网友:你可爱的野爹
  • 2022-01-10 03:58
oracle中查询及删除重复记录的SQL语句:
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
SELECt *
FROM people
WHERe peopleid IN
(SELECt peopleid FROM people GROUP BY peopleid HAVINg COUNT(peopleid) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
DELETe FROM people
WHERe peopleid IN
(SELECt peopleid FROM people GROUP BY peopleid HAVINg COUNT(peopleid) > 1)
AND ROWID NOT IN (SELECt MIN(ROWID)
FROM people
GROUP BY peopleid
HAVINg COUNT(peopleid) > 1)
注:rowid为oracle自带不用该.....
3、查找表中多余的重复记录(多个字段)
SELECt *
FROM vitae a
WHERe (a.peopleid, a.seq) IN (SELECt peopleid,
seq
FROM vitae
GROUP BY peopleid,
seq
HAVINg COUNT(*) > 1)

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
DELETe FROM vitae a
WHERe (a.peopleid, a.seq) IN (SELECt peopleid,
seq
FROM vitae
GROUP BY peopleid,
seq
HAVINg COUNT(*) > 1)
AND ROWID NOT IN (SELECt MIN(ROWID)
FROM vitae
GROUP BY peopleid,
seq
HAVINg COUNT(*) > 1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
SELECt *
FROM vitae a
WHERe (a.peopleid, a.seq) IN (SELECt peopleid,
seq
FROM vitae
GROUP BY peopleid,
seq
HAVINg COUNT(*) > 1)
AND ROWID NOT IN (SELECt MIN(ROWID)
FROM vitae
GROUP BY peopleid,
seq
HAVINg COUNT(*) > 1)
全部回答
  • 1楼网友:持酒劝斜阳
  • 2022-01-10 04:23
你好:一种简单方式就是直接根据你不想要的数据进行分组后存储到另外一张表里面 create table as select * from b group id; 可以写存储过程来实现判断重复数据后删除。 另外一种方法就是插入的时候直接设置主见不让他插入,直接提示不能插入。 这个可以参考资料:http://blog.csdn.net/haiross/article/details/38513247
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯