mysql分頁:
從0開始計數(shù)
????第0頁:
????select * from student limit 0,10;
????第1頁:
????select * from student limit 10,10;
????第2頁:
????select * from student limit 20,10;
????第n頁:
????select * from student? limit? 頁數(shù)*頁面大小,頁面大小;
oracle分頁:
從1開始計數(shù):
? ? 了解oracle分頁前,我們要了解oracle中的rownum的用法勉痴。? ?
? ? rownum偽列廓脆,將一組數(shù)據(jù)從1開始計數(shù),直到最后一位掠拳。但是rownum只能查詢小于其本身的數(shù)據(jù),不能查詢大于其本身的數(shù)據(jù)拐叉。
? ? 第n頁:
? ? select * from?
? ?(
????????select? rownum? r, t.*?
? ? ? ?from
? ? ? ?(select s.* from student s order by sno asc)? t?
? ? ? ? where r<=n*10
? ?)
? ? ? where r>=(n-1)*10+1? and? r<=n*10;
SQLServer分頁
? ?SQLServer2003之后支持
? ? top:
? ? select? top? 頁面大小? *? from student where id not in
? ? (
? ? ? ? select top (頁數(shù)-1) * 頁面大小? id from student order by sno asc
? ? )
? ??
? ?SQLServer2005之后支持
? ? row_number:? ?
? ? SQLServer中的row_number和oracle中的rownum相似,但是要對一個列進行預(yù)處理操作
? ? 第n頁:
? ??select * from
? ? (
????????select? row_number()? over (sno order by sno asc)? as? r, t.*? from? student? t
? ? ? ? where? r<=n*10
? ? )
????where r>=(n-1)*10+1? and? r<=n*10;
????SQLServer2012之后支持
? ? ? ?offset? fetch? next? ?rows? only:
? ? ? ? select * from student order by sno
? ? ? ? offset (頁數(shù)-1)*頁面大小+1? fetch? next? 頁面大小 rows only;
總結(jié)
SQLServer中的row_number分頁sql與Oracle分頁sql的區(qū)別:
? ? 1、變量名稱不同:
? ? ? ? ? ? Oracle的名稱為rownum
? ? ? ? ? ? SQLServer的名稱為row_number()
? ? 2、Oracle需要排序(為了排序森逮,單獨寫了一個子程序)
? ? ? ? ? SQLServer可以省略該排序的子查詢,因為SQLServer中可以通過over()直接排序
? ??