關於sql分頁mysql
今天用到分頁了順便就總結了一下sql
mysql 數據庫:數據庫
mysql 中有分頁的關鍵字limit,它能夠實現分頁很簡單;
SELECT * FROM sys_user ORDER BY userid LIMIT startNo,total;函數
startNo 是查詢開始的行數,total 是要查詢出多少條;測試
sql server2005 數據庫:
sql server 實現分頁有兩種方式能夠實現;
一:利用 top 和 row_number() over(order by...)函數實現
TOP 子句用於規定要返回的記錄的數目 ,row_number()至關於僞列!
select top total * from
(select *,row_number() over(order by pid) rownum from person_base )x where x.rownum>startNo
startNo 是查詢開始的行數,total 是要查詢出多少條;
須要注意的是 row_number()函數後邊必須有一個排序over(order by pid)
二:利用top 和 not in 實現
select top total * from person_base where pid not in
( select top startNo pid from person_base order by pid)
order by pidserver
根據別人測試的數據顯示第二種方法比第一種方法效率要高排序
Oracle 數據庫:
Oracle 實現分頁須要用到僞列rownum
select * from (select *,rownum rno from person_base where rownum < = (pageNo * pageSize)) x where rno > ((pageNo - 1) * pageSize);
pageNo 是第幾頁 pageSize 是每頁顯示的個數
在Oracle中即有 rownum 又有row_number 可是二者是有區別的
1.rownum的特性(沒有1就不會有2,沒有3……以此類推下去)決定的 rownum只能從1開始
2.使用rownum進行排序的時候是先對結果集加入僞列rownum而後再進行排序,而函數row_number()在包含排序從句後是先排序再計算行號碼。it