温馨提示×

oracle中rownum和row_number()有什么区别

小亿
133
2023-08-18 01:40:57
栏目: 云计算

在Oracle中,ROWNUM和ROW_NUMBER()都是用于进行行号分配的函数,但它们有一些关键的区别。

  1. ROWNUM是一个伪列,它是在查询结果返回之后才计算的。它表示返回结果集中的行号,而不是物理存储中的行号。因此,如果在查询中使用ROWNUM,它会在最终结果集中返回行号,而不是原始表中的行号。

例如,下面的查询将返回一个包含行号的结果集,其中行号为1到10:

SELECT ROWNUM, column_name

FROM table_name

WHERE ROWNUM <= 10;

  1. ROW_NUMBER()是一个分析函数,它在查询执行期间计算,并为结果集中的每一行分配一个唯一的行号。它可以用于根据指定的排序顺序对结果集进行编号。

例如,下面的查询将返回一个包含行号的结果集,其中行号是根据指定的排序顺序分配的:

SELECT ROW_NUMBER() OVER (ORDER BY column_name), column_name

FROM table_name;

总结:

  • ROWNUM是在查询结果返回之后计算的,而ROW_NUMBER()是在查询执行期间计算的。

  • ROWNUM返回的是结果集中的行号,而ROW_NUMBER()返回的是根据指定排序顺序分配的行号。

  • ROWNUM是一个伪列,而ROW_NUMBER()是一个分析函数。

0