ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

oracle 删除重复数据

oracle 删除重复数据
delete hpas_index_data_source swhere s.id in (select idFROM (SELECT t1.*,ROW_NUMBER() OVER(PARTITION BY t1.indexid, t1.doctor_id, t1.start_date, t1.vals ORDER BY t1.rowid) as rnFROM hpas_index_data_source t1where t1.org_id = '1005'and t1.start_date like '2024%'and t1.dept_name like '%全科门诊%'--and t1.doctor_id = '014371'--and t1.indexid = 'IA01019839'
                           )WHERE rn > 1)

关键函数 ROW_NUMBER(): PARTITION BY t1.indexid, t1.doctor_id, t1.start_date, t1.vals:这定义了什么是“重复”。

它将这些字段组合完全相同的记录归为同一个组。

indexid:可能是指标ID(如“门诊人次”、“处方数”)。

doctor_id:医生ID。

start_date:开始日期(通常是数据统计的日期或时段)。

vals:该指标的值。 ORDER BY t1.rowid:在每个分组内,按照Oracle的物理行ID (rowid) 进行排序。

rowid是唯一的,最早插入的数据通常(但不绝对)有更小的rowid。这意味着每个分组内rowid最小的那条记录会被标记为rn=1。

返回列表