rownum背后的机制:
1 Oracle executes your query.
2 Oracle fetches the first row and calls it row number 1.
3 Have we gotten past row number meets the criteria? If no, then Oracle discards the row, If yes, then Oracle return the row.
4 Oracle fetches the next row and advances the row number (to 2, and then to 3, and then to 4, and so forth).
5 Go to step 3.
简单翻译:
1.先按照where中除了rownum以外的其他的条件查询出结果并生成结果集
2.给第一步生成的结果集加上rownum伪列
3.按照rownum的条件进一步限制。如果一条记录不符合rownum的限制条件,则丢弃,而且下一条记录的rownum还是从1开始重新计数
oracle的 rownum机制 这篇文章讲解的很清楚了!