oracle中rownum和row_number()有甚么不同
在Oracle中,ROWNUM和ROW_NUMBER()都是用于进行行号分配的函数,但它们有一些关键的不同。
1. ROWNUM是一个伪列,它是在查询结果返回以后才计算的。它表示返回结果集中的行号,而不是物理存储中的行号。因此,如果在查询中使用ROWNUM,它会在终究结果集中返回行号,而不是原始表中的行号。
例如,下面的查询将返回一个包括行号的结果集,其中行号为1到10:
SELECT ROWNUM, column_name
FROM table_name
WHERE ROWNUM <= 10;
2. ROW_NUMBER()是一个分析函数,它在查询履行期间计算,并为结果集中的每行分配一个唯一的行号。它可以用于根据指定的排序顺序对结果集进行编号。
例如,下面的查询将返回一个包括行号的结果集,其中行号是根据指定的排序顺序分配的:
SELECT ROW_NUMBER() OVER (ORDER BY column_name), column_name
FROM table_name;
总结:
- ROWNUM是在查询结果返回以后计算的,而ROW_NUMBER()是在查询履行期间计算的。
- ROWNUM返回的是结果集中的行号,而ROW_NUMBER()返回的是根据指定排序顺序分配的行号。
- ROWNUM是一个伪列,而ROW_NUMBER()是一个分析函数。
TOP