Oracle学习——实用SQL(第二篇)

本文详细介绍了在Oracle数据库中使用rowid和rownum进行数据分组的方法,包括根据rowid和rownum进行分页查询的具体SQL语句,对比了两者作为伪列在查询中的不同作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


对某张表数据进行分组

(一)、根据rowid分组

SELECT *
  FROM EMP
 WHERE ROWID IN
       (SELECT RID
          FROM (SELECT ROWNUM RN, RID
                  FROM (SELECT ROWID RID, EMPNO FROM EMP ORDER BY EMPNO DESC)
                 WHERE ROWNUM <= ( (currentPage-1) * pageSize + pageSize )) --每页显示几条
         WHERE RN > ((currentPage-1) * pageSize) ) --当前页数
 ORDER BY EMPNO DESC;

(二)、根据rownum分组

SELECT *
  FROM (SELECT T.*, ROWNUM RN
          FROM (SELECT * FROM EMP ORDER BY EMPNO DESC) T
         WHERE ROWNUM <= ( (currentPage-1) * pageSize + pageSize )) --每页显示几条
 WHERE RN > ( (currentPage-1) * pageSize ); --当前页数

(三)、rowid和rownum

  1. 区别
    两者都oracle中的伪列。(伪列即隐藏列)
    rowid:是物理地址,用于唯一标识一条记录的物理位置,它是唯一且不会改变的。
    rownum:根据查询的结果集给每行分配一个逻辑编号,它是动态可变的。
    2.参考
    参考文章一:https://blog.youkuaiyun.com/yu102655/article/details/52370542
    参考文章二:https://blog.youkuaiyun.com/zdp072/article/details/25384757
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值