有个表内有1677万条数据,而不同的有571万。当并不是每个字段都相同的内容,比如有100个同名同姓的人,只是薪水不一样了,其他字段内容一样。
就不能用rowid方法 据据oracle带的rowid属性,进行判断,是否存在重复,语句如下: 查数据: select * from table<chmetcnv w:st="on" unitname="a" sourcevalue="1" hasspace="True" negative="False" numbertype="1" tcsc="0">1 a</chmetcnv> where rowid !=(select max(rowid) from table1 b where a.name1=b.name1 and a.name2=b.name2......) 删数据: delete from table<chmetcnv w:st="on" unitname="a" sourcevalue="1" hasspace="True" negative="False" numbertype="1" tcsc="0">1 a</chmetcnv> where rowid !=(select max(rowid) from table1 b where a.name1=b.name1 and a.name2=b.name2......)
而用
DELETE FROM emp2 2 WHERE ROWID IN 3 (SELECT ROWID 4 FROM (SELECT ROWID, 5 ROW_NUMBER() OVER (PARTITION BY empno ORDER BY EMPNO) rn 6 FROM emp2) 7 WHERE rn > 1);
根据员工号相同的来删除,并且只留下一行
本文介绍了一种在Oracle数据库中批量删除重复记录的方法。通过使用ROWID和ROW_NUMBER()函数结合PARTITION BY子句,可以有效地找出并删除指定条件下的重复数据,确保每组重复的数据仅保留一条。
4万+

被折叠的 条评论
为什么被折叠?



