oracle 刪除重複資料的幾種方法
create table test_0210(id number,name varchar2(32),age number);
insert into test_0210 values(1,'abc',32);
insert into test_0210 values(2,'def',33);
insert into test_0210 values(3,'def',45);
commit;
SQL> select * from test_0210;
ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
2 def 33
3 def 45
1.使用rowid 效率高 直接定位到資料塊地址,根據需要取max rowid 或 min rowid 只適合刪除少量重複資料
SQL> delete from test_0210 where rowid not in (select max(rowid) from test_0210 group by name);
1 row deleted
SQL> select * from test_0210;
ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
3 def 45
2.利用ID 只適合刪除少量重複資料
SQL> delete from test_0210 where id not in (select max(id) from test_0210 group by name);
1 row deleted
SQL> select * from test_0210;
ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
3 def 45
3.建立臨時表 ,這種方法適合刪除大量重複資料
SQL> create table test_temp as select * from test_0210 where id in (select max(id) from test_0210 group by name)
2 ;
Table created
SQL> truncate table test_0210;
Table truncated
SQL> insert into test_0210 select * from test_temp;
2 rows inserted
SQL> commit;
Commit complete
SQL> select * from test_0210;
ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
3 def 45
4:也是建立臨時表 這裡用的是分析函式
SQL> create table test_temp as select id,name,age from (select row_number() over(partition by name order by id) rn ,id,name,age
2 from test_0210) where rn=1;
Table created
SQL> truncate table test_0210;
Table truncated
SQL> insert into test_0210 select * from test_temp;
2 rows inserted
SQL> commit;
Commit complete
SQL> select * from test_0210;
ID NAME AGE
---------- -------------------------------- ----------
1 abc 32
2 def 33
總結刪除重複資料的方法很多,具體看需求,而選擇最符合自己的sql
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-247859/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle刪除重資料方法Oracle
- Oracle中刪除表中的重複資料Oracle
- 刪除重複資料
- ORACLE批量刪除無主鍵重複資料Oracle
- 刪除oracle重複值Oracle
- mongodb刪除重複資料MongoDB
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- sqlserver中刪除重複資料SQLServer
- mysql 刪除表中重複的資料MySql
- 解析postgresql 刪除重複資料案例SQL
- PostgreSQL刪除表中重複資料SQL
- 幾種刪除Linux目錄的方法Linux
- MS SQL Server 刪除重複行資料SQLServer
- excel刪除重複資料保留一條 如何刪掉重複資料只留一條Excel
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- MySQL資料庫中刪除重複記錄的方法總結[推薦]MySql資料庫
- LINUX 使用批量刪除檔案的幾種方法Linux
- VSCode刪除重複的空行VSCode
- 事件溯源投影模式:重複資料刪除策略 - domaincentric事件模式AI
- 使用Java Stream API中DistinctBy刪除重複資料JavaAPI
- 降低論文重複率的幾種修改方法!
- MySql避免重複插入記錄的幾種方法MySql
- mysql 刪除重複項MySql
- JavaScript 刪除重複字元JavaScript字元
- MySQL防止delete命令刪除資料的兩種方法MySqldelete
- 刪除重複id的記錄
- ORACLE 在缺少主鍵ID的情況下刪除重複資料,只保留一行Oracle
- oracle刪除超過N天資料指令碼的方法Oracle指令碼
- JavaScript 刪除字串重複字元JavaScript字串字元
- 刪除linux下的oracle資料庫LinuxOracle資料庫
- Oracle如何刪除表中重複記錄保留第一條Oracle
- SqlServer中根據某幾列獲取重複的資料將其刪除並保留最新一條SQLServer
- 指定刪除幾天前的索引資料索引
- JavaScript陣列刪除重複元素JavaScript陣列
- JavaScript 刪除陣列重複元素JavaScript陣列
- Remove Duplicate Letters 刪除重複元素REM
- JavaScript刪除字串中重複字元JavaScript字串字元
- 刪除排序陣列中的重複項排序陣列
- Oracle:重複資料去重,只取最新的一條資料Oracle