Oracle剔除重复数据的老三种植sql写法

题材:一个表有自增的ID列,表中产生一对记下内容还,也就是说这些记录除了ID不同外,其他的音信都一律。需要将更的记录封存一久,剩下的删减

 

措施一致:还是2000年底时刻同各项Oracle
DBA叫罗敏发给技术部全体的(可惜原始邮件找不交了,要不然我当文物发给大家):
delete from temp
where id not in (
 select min(id) 
 from temp
 group by column1,column2,…,columnn)
 个人感觉这个法思路比较清楚。不过效率相对来说不赛。

 

道二:赵贲于网及搜出来的:
 –删除相同城市下的同样行政区
 delete a from area a where a.id>(select
min(id) from area b where a.area_id=b.area_id and
a.city_id=b.city_id)
 
方法三:使用sql
2005新增的row_number()功能及with关键字,我是起赵立东那里学来之。

 

print(‘删除PriceInfo表中再次的记录’)
;WITH a AS (
 SELECT ROW_NUMBER()OVER (PARTITION BY
hotel_id,room_type_id,start_date,end_date
 ORDER BY hotel_id,room_type_id,start_date,end_date) AS rn ,* 
 FROM hotel_price
 )
delete from a WHERE a.rn>1

相关文章