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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mongodb 刪除重複資料的幾個方法MongoDB
- 刪除重複資料的幾個方法(轉)
- 刪除重複資料的一種高效的方法
- SQL Server中刪除重複資料的幾個方法SQLServer
- Oracle查詢重複資料與刪除重複記錄方法Oracle
- oracle刪除重資料方法Oracle
- Oracle中刪除重複資料的SqlOracleSQL
- 刪除重複資料
- oracle重複資料的查詢及刪除Oracle
- 刪除重複資料的三種sql寫法SQL
- mysql查詢表裡的重複資料方法和刪除重複資料MySql
- Oracle查詢重複資料與刪除重複記錄Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- 重複資料刪除和SSD的互補方法
- mongodb刪除重複資料MongoDB
- MySQL刪除重複資料MySql
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- ORACLE批量刪除無主鍵重複資料Oracle
- Oracle 刪除重複資料只留一條Oracle
- 【常用方法推薦】如何刪除MySQL的重複資料?MySql
- 刪除oracle重複值Oracle
- 刪除表裡重複資料
- sqlserver中刪除重複資料SQLServer
- Java刪除ArrayList中的重複元素的2種方法Java
- oracle 查詢及刪除表中重複資料Oracle
- mysql 刪除表中重複的資料MySql
- 刪除Oracle重複記錄Oracle
- oracle刪除重複記錄Oracle
- PostgreSQL刪除表中重複資料SQL
- 解析postgresql 刪除重複資料案例SQL
- MySQL刪除表重複記錄的三種方法舉例MySql
- 三種方法刪除列表中重複的元素及效率分析!
- 用SQL語句刪除重複記錄的四種方法SQL
- MS SQL Server 刪除重複行資料SQLServer
- T-SQL 刪除重複資料SQLSQL
- 海量資料處理_刪除重複行
- 根據rowid刪除重複資料