【PL/SQL】返回第几个到第几个的信息 - 分页函数

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

  • 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     

【PL/SQL】返回第几个到第几个的信息 - 分页函数_第1张图片

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

【PL/SQL】返回第几个到第几个的信息 - 分页函数_第2张图片


方法二:排序函数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;

你可能感兴趣的:(plsql,oracle)