记录一次Oracle数据去重操作;
背景,由于某业务表数据来源比较复杂,数据量大,并且不定时推送,所以建表时没有主键,无法进行数据过滤,造成表中数据重复较多;
因此,要对该表进行数据去重,操作如下:
--根据字段a,b group by 查到去重后的所有数据的rowID,
再根据rowID去查到去重后的结果集,
然后可以直接删除(not in)或者保守处理(创建新表,把去重后的数据存进去,再改表名即可)
select * from tableName s where s.rowid in (
select min(rowid) from tableName t group by t.a,t.b )
--CREATE TABLE 临时表 AS ()
(如果创建临时表,那么现在临时表中的数据就是去重后的数据了,只需要改下表名即可。)
--狠一点的,直接 not in (),在原表中删除重复数据即可,快的一批,就是不太稳!
如此即可,简单方便!