You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解析获取EMP表最后5条记录的SQL查询逻辑

这条SQL取EMP表最后5条记录的原理解析

首先得先搞懂Oracle里的ROWID:它是数据库给每条记录分配的唯一标识符,对应记录在磁盘上的存储位置,通常情况下,后插入的记录ROWID会比先插入的大(这也是这条SQL能生效的前提)。

接下来拆解这条SQL的逻辑:

  • 主查询遍历EMP表的每一条记录,把当前遍历的记录记作a。
  • 子查询做的事情:统计EMP表中所有ROWID比当前记录a的ROWID大的记录数量。
  • 条件5 > 子查询的统计数,也就是统计数要小于5:
    • 假设表中最后一条记录,没有比它ROWID更大的记录,统计数是0,满足0<5;
    • 倒数第二条记录,只有1条记录的ROWID比它大,统计数1,满足1<5;
    • ...以此类推,倒数第五条记录,有4条记录的ROWID比它大,统计数4,满足4<5;
    • 而倒数第六条及更早的记录,统计数会≥5,不满足条件,被过滤掉。

这样最后筛选出来的就是表中ROWID最大的5条记录,也就是通常我们说的“最后5条插入的记录”。

注意:如果表有过删除、移动记录(比如ALTER TABLE MOVE)的操作,ROWID的顺序可能和插入顺序不一致,这时候这条SQL的结果就未必是实际最后插入的5条了。

内容的提问来源于stack exchange,提问作者Ameesha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 21:15:33