文章目錄
- 採用偽列 rownum
- 運用分析函數
- 運用minus方法
採用偽列 rownum
查詢前10條記錄
select * from t_user t where ROWNUM <10;
按照學生ID排名,抓取前三條記錄
SELECT * FROM(SELECT id,realname FROM T_USER ORDER BY id asc ) WHERE ROWNUM <=3
分頁SQL寫法,從第10條記錄開始,提取10條記錄。
SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;
按照學生ID排名,從第10條記錄開始,提取10條記錄。
SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER ORDER BY id asc)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;
【注】
1. where rownum>1 不能抓取到記錄。
2. where rownum between 2 and 10 也不能抓取到記錄。
運用分析函數
用分析函數row_number()over(ORDER BY 欄位)
按照學生ID排名,抓取前三條記錄
SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn <=3
按照學生ID排名,從第10條記錄開始,提取10條記錄。
SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn BETWEEN 10 AND 20
運用minus方法
從第10條記錄開始,提取10條記錄。
SELECT * FROM T_USER WHERE ROWNUM<20 MINUS SELECT * FROM T_USER WHERE ROWNUM<10;
按ID排序後,從第10條記錄開始,提取10條記錄。
(SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<20) MINUS( SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<10);