文档

ROWNUM

更新时间:

ROWNUM伪列对于查询返回的每一行返回一个数字,表示从表或连接行的集合中选择该行的顺序。选择的第一行ROWNUM为1,第二行ROWNUM为2,以此类推。

使用指南

ROWNUM可以在DML查询语句中使用,可以出现在SELECT LISTWHEREHAVINGORDER 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阶段使用虽然是合法的,但其行为是未定义的。

  • 本页导读 (0)
文档反馈