鱼塘码农

菜鸟学习记录
鱼海无涯

Oracle数据库删除重复记录

上周开发了一个接口,从对方数据库获取记录添加到本地,理论上每人一天只会有一条记录,但是对方数据库中会有一天多条的情况,且内容相同,我方也没做限制,直接获取了过来,几万条数据,想通过sql去一下重。

表名:T_RECORD
主键:ID
人员编号:PERSONNEL_ID
记录日期:RECORD_TIME
现在就要按照人员编号和记录日期去重

select PERSONNEL_ID,RECORD_TIME,count(*)
from T_RECORD
group by PERSONNEL_ID,RECORD_TIME
having count(*)>1
order by PERSONNEL_ID, RECORD_TIME;  -- 按人员ID和日期查询重复数据


select min(id) as id,PERSONNEL_ID,RECORD_TIME
from T_RECORD
group by PERSONNEL_ID,RECORD_TIME;  -- 不重复的数据(应保留的)


delete from T_RECORD where id not in(
    select min(id)
    from T_RECORD 
    group by PERSONNEL_ID,RECORD_TIME-- 删除不应该保留的
);  
文章内容可能来自网络,纯为学习使用,若有侵权,请联系我删除 | 当前页面:鱼塘码农 » Oracle数据库删除重复记录

评论