简单说,ROWNUM就是一个对查找结果分配行号的伪列。
分别执行如下两个sql
和
会发现1可以查到数据,但是2不行。
ROWNUM的工作机制
- 行生成:SQL查询语句生成结果集的所有行。
- 行号分配:在结果集中,从第一行开始依次赋予ROWNUM值。
- 条件过滤:在结果集上应用WHERE条件。
当WHERE ROWNUM = 1时,Oracle会遵循以下步骤:
当WHERE ROWNUM = 2时:
Oracle首先选择第一行,并将ROWNUM设置为1。
检查WHERE条件,发现ROWNUM不等于2,因此丢弃这行数据。
Oracle继续尝试下一行,将其ROWNUM设置为1,再次检查WHERE条件,仍然不满足,继续丢弃。
因为ROWNUM始终从1开始,所以永远不会有ROWNUM等于2的行被选中。
需将查找结果作为子查询再在外面包一层,如下
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/4597.html