从表中删除重复的行

时间:2015-05-19 02:11:56

标签: sql oracle oracle11g max rowid

sql> delete from emp where rowid not in (select max(rowid) from emp group by empno); 

任何人都可以解释max(rowid)做什么?请解释这个sql程序

1 个答案:

答案 0 :(得分:1)

rowid是一个可用于Oracle表中所有行的伪列。它实际上是行的地址,用于标识数据页面上的数据页和偏移量。

与(几乎)任何其他数据类型一样,您可以获取最大值。所以,这样做是为每个rowid计算empno的最大值。 delete然后删除最大值之一的所有行。

这样可以为每个empno保留一行。

rowid本身非常好documented