oracle高效的批量刪除重複資料

2021-08-30 01:19:02 字數 663 閱讀 1528

如何高效刪除重複資料?用諸如:

rowid,id相等,速度太慢了。對於大資料量的表的做插入,效率最好的是用臨時表。

基本上就是這麼一流程:

drop table t1

create table t1 as select ctemp.id ,max(ctemp.name) name,

max(ctemp.city) city from cardtypeid_temp ctemp

group by ctemp.id

truncate table cardtypeid_temp

insert into cardtypeid_temp select * from t1

在建立臨時表的時候,沒有用distinct * ,因為*是整行,如果id(唯一)相同,name不同,在用distinct的時候

任何會認為不同,這顯然是不可以的。

如果用 distinct id,name意思是與distinct * 一樣的。

由於這裡我只判斷id是重複列,所以分組的時候用就只了id,而其他的列表項除了ctemp.id外,都是單行

函式,必須要取別名。

注意一定要列出原表的全部字段

才能在往原表裡面插入的時候就不會報錯。好像是報告value is not enough。

oracle批量刪除

專案中有個需求需要每個月末定時去刪除一張表裡的歷史資料,剛開始就寫了乙個簡單的delete語句,然後起乙個job定時去呼叫,後來被告知歷史資料量很大,所以從效能和安全上考慮對sql進行了如下修改 declare cursor id key cursor is select id key from x...

如何高效刪除Oracle資料庫中的重複資料

oracle 資料整合解決方案 oracle資料整合解決方案用於在soa bi和資料倉儲環境中構建 部署和管理以實時資料為中心的架構,包含了資料整合的所有要素 實時資料移動 轉換 同步 資料質量 資料管理和資料服務 能確保各個複雜系統的資訊及時 準確 一致。通過使用oracle資料整合,企業將其開發...

oracle批量刪除表

如下 declare 定義臨時變數用於儲存每一條刪除sql tmp sql varchar2 4000 定義游標變數用於儲存所有的刪除sql cursor drop sql is 查詢拼接出所有刪除sql select drop table table name from user tables w...