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
阶段使用虽然是合法的,但其行为是未定义的。
文档内容是否对您有帮助?