2015-05-19 84 views
0
sql> delete from emp where rowid not in (select max(rowid) from emp group by empno); 

任何人都可以解釋什麼最大(rowid)嗎?請解釋這個sql程序刪除表格中的重複行

+0

您可能希望對所有列執行「group by」操作,「count(1)」並在其上添加「having count(1)> 1」,以便檢測重複項。之後,你可以發表聲明來刪除從其中退回的偶數或奇數的rownums。 –

回答

1

rowid是一個可用於Oracle表中所有行的僞列。它確實是該行的地址,用於標識數據頁面上的數據頁面和偏移量。

與(幾乎)任何其他數據類型一樣,您可以取最大值。所以,這是做什麼計算最大rowid爲每個empnodelete然後刪除所有行是而不是的最大值之一。

這對每個empno都有保持單行的效果。

rowid本身相當好documented