完整的查询语句类似是这样的:
select ..., ROWNUM
from table
where <where clause>
group by <columns>
having <having clause>
order by <columns>;
它的处理顺序是:
- 首先,执行 FROM/WHERE 语句
- 为结果赋予 ROWNUM 并同时根据 FROM/WHERE 语句进行 rownum 过滤
- 执行 SELECT
- 执行 GROUP BY
- 执行 HAVING
- 执行 ORDER BY
PS: 如果存在分析函数(row_number etc),那么,分析函数的执行会在 order by 之前。