看完这章你将会学习到以下:
- 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;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。