ROWNUM伪列对于查询返回的每一行返回一个数字,表示从表或连接行的集合中选择该行的顺序。选择的第一行ROWNUM为1,第二行ROWNUM为2,以此类推。
使用指南
ROWNUM可以在DML查询语句中使用,可以出现在SELECT LIST、WHERE、HAVING、ORDER BY以及GROUP BY等位置,也可以在CTE和子查询中使用。
示例
以下示例展示了从test表中查询前10行数据。
SELECT rownum, * FROM test WHERE ROWNUM <= 10;如果同一个查询中的ROWNUM后面有ORDER BY子句,那么这些行将在通过ROWNUM过滤后被ORDER BY子句重新排序。以下命令表示获取前10行数据后,再通过ORDER BY语句进行排序。
SELECT * FROM test WHERE ROWNUM <= 10 ORDER BY id;如果想要获取ORDER BY之后的前10行数据,可以执行以下命令:
SELECT * FROM (SELECT * FROM test ORDER BY id) WHERE ROWNUM <= 10;你也可以使用ROWNUM给表的每一行赋唯一的值,如下所示:
UPDATE test SET id = ROWNUM;说明
以下命令由于在第1行时ROWNUM为1不满足
WHERE条件,使得ROWNUM在之后的每一行值均为1,均无法满足ROWNUM>1的条件,因此无法查询到任何数据:SELECT * FROM test WHERE ROWNUM>1;ROWNUM在
join阶段使用虽然是合法的,但其行为是未定义的。
该文章对您有帮助吗?