Oracle删除重复数据的语句 有点疑问

DELETE FROM TABLE_NAME
WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);
要是
COL1 COL2
1 2
1 2
1 2
2 3
那么会删除两条1 2的数据
这个写法是很巧妙 不过我觉得有点问题
要是这样
COL1 COL2
1 2
2 3
1 2
2 3
是不是两条1 2的数据都会被删除呢
不会的。
因为你的删除条件是 Rowid不等于max(rowid)
也就是说,几条重复数据中,Rowid最大的那条备喊数据链芦被保留下来了。仿唤野
在Oracle中Rowid是逻辑的伪列,是唯一的,所以除了肢锋max(rowid)的一列,其他的重复列都会被闷饥纯删除蚂咐!!!