乐趣区

PLSQL返回第几个到第几个的信息-分页函数

看完这章你将会学习到以下:

  • RowNum & Minus
  • Row_Num_ber,Rank,Densk_rank over(partition by ….. ….)

一般在 SQl server, 我们可以用排序和 Limit 取到相应范围的值,但在 PL/SQL 里面没有这些函数。我们可以用 RowNum 或者用 Row_number()over(Partition by)或者用补集。


使用场景:
查询 EMP 表第 4 行到第 8 行所有员工的信息;
注意:Minus 做补集的时候,两张或者多张表的字段内容和字段类型要口径一致,不会没有任何结果。

SELECT * FROM EMP;

----  ROWNUM 只能返回小于或者小于等于的区域

SELECT E.* ,ROWNUM AS RN
       FROM EMP E 
       WHERE ROWNUM <9
MINUS
SELECT E.*,ROWNUM AS RN
       FROM EMP E
       WHERE ROWNUM <4     

注意 ROWNUM 是查询数据时生成序列,在查询条件中,如果查询条件中 ROWNUM 大于某一正整数 则不返还任何结果


方法二:排序函数 ROW_NUMBER()
注意 不一定要搭配用 PARTITION BY 按字段分组 的,但排序函数 RANK.,DENSERANK,ROW_NUMBER 一定要搭配 Order by

SELECT * FROM 
(SELECT E.*,ROW_NUMBER()OVER(ORDER BY EMPNO) AS RN      
       FROM EMP E 
) 
WHERE RN BETWEEN 4 AND 8;
退出移动版