Oracle去除重復數(shù)據(jù)
查詢某些字段相同的記錄
如:查詢col1與col2值相同的記錄:
select a.* from table1 a, table1 b where a.id <> b.id and a.col1 = b.col1 and a.col2 = b.col2;
一、用rowid方法:
根據(jù)oracle自帶的rowid屬性進行判斷是否存在重復記錄。
rowid偽列用于唯一標識物理位置的表行,當用insert插入數(shù)據(jù)時,會自動生成rowid,與數(shù)據(jù)一起存放,形如:AAAL=XAAAEAAAAA。
1、查數(shù)據(jù):
select * from table1 a where rowid!= (select max(rowid) from table1 b where a.col1 = b.col1 and a.col2 = b.col2;
2、刪數(shù)據(jù):
保留rowid最大的記錄:
delete from table1 a where rowid!= (select max(rowid) from table1 b where a.col1 = b.col1 and a.col2 = b.col2;
二、group by 方法:
1、查數(shù)據(jù):
select * from table1 a where (a.col1,a.col2) in (select col1,col2 from table1 group by col1,col2 having count(*)>1)
2、刪數(shù)據(jù):
刪除表中多余的重復記錄(多個字段),只保留rowid最小的記錄。
delete from table1 a where (a.col1,a.col2) in (select col1,col2 from table1 group by col1,col2 having count(*)>1) and rowid not in (select min(rowid) from table1 group by col1,col2 having count(*)>1)
到此這篇關于Oracle去除重復數(shù)據(jù)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Oracle數(shù)據(jù)庫中SQL開窗函數(shù)的使用
這篇文章主要介紹了Oracle數(shù)據(jù)庫中SQL開窗函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Oracle在DML語句中使用returing?into子句
這篇文章介紹了Oracle在DML語句中使用returing?into子句的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
Oracle數(shù)據(jù)庫正則表達式純數(shù)字例子
正則表達式已經(jīng)在很多軟件中得到廣泛的應用,包括*nix(Linux, Unix等),HP等操作系統(tǒng),PHP,C#,Java等開發(fā)環(huán)境,這篇文章主要給大家介紹了關于Oracle數(shù)據(jù)庫正則表達式純數(shù)字的相關資料,需要的朋友可以參考下2024-08-08
Oracle的RBO和CBO詳細介紹和優(yōu)化模式設置方法
這篇文章主要介紹了Oracle的RBO和CBO詳細介紹和優(yōu)化模式設置方法,RBO即基于規(guī)則的優(yōu)化方式(Rule-Based Optimization),CBO即基于代價的優(yōu)化方式(Cost-Based Optimization),需要的朋友可以參考下2014-07-07
詳解PL/SQL Developer連接本地Oracle 11g 64位數(shù)據(jù)庫
本篇文章主要介紹了PL/SQL Developer連接本地Oracle 11g 64位數(shù)據(jù)庫 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
oracle數(shù)據(jù)庫中sql%notfound的用法詳解
SQL%NOTFOUND 是一個布爾值。下面通過本文給大家分享oracle數(shù)據(jù)庫中sql%notfound的用法,需要的的朋友參考下吧2017-06-06

