???? 在編程過(guò)程中需要分頁(yè)顯示的東西很多,也是很見(jiàn)的一種功能,開(kāi)始接觸編程的時(shí)候,總是不應(yīng)能很好的處理這一點(diǎn),造成效率很低,前一段時(shí)間在網(wǎng)上搜集了一下,找到了對(duì)SQLSERVER,MYSQL,ORACLE三種數(shù)據(jù)庫(kù)的分頁(yè)SQL語(yǔ)句,這些都來(lái)自網(wǎng)絡(luò)。
--SQL Server
??????? 從數(shù)據(jù)庫(kù)表中的第M條記錄開(kāi)始取N條記錄,利用Top關(guān)鍵字:注意如果Select語(yǔ)句中既有top,又有order by,則是從排序好的結(jié)果集中選擇:
??????? SELECT *
??????? FROM? ( SELECT Top N *?
???????????????????????? FROM? (SELECT Top (M + N - 1) * FROM 表名稱(chēng) Order by 主鍵 desc) t1 ) t2
??????? Order by 主鍵 asc
??????? 例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語(yǔ)句如下:
??????? SELECT *
??????? FROM ( SELECT TOP 20 *
??????????????????????? FROM (SELECT TOP 29 * FROM Sys_option order by sys_id desc) t1) t2
??????? Order by sys_id asc
--Oralce數(shù)據(jù)庫(kù)
??????? 從數(shù)據(jù)庫(kù)表中第M條記錄開(kāi)始檢索N條記錄
??????? SELECT *
??????? FROM (SELECT ROWNUM r, t1.* From 表名稱(chēng) t1 where rownum < M + N) t2
??????? where t2.r >= M
??????? 例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語(yǔ)句如下:
??????? SELECT *
??????? FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2
???????? Where t2.R >= 10
?--My sql數(shù)據(jù)庫(kù)
??????? My sql數(shù)據(jù)庫(kù)最簡(jiǎn)單,是利用mysql的LIMIT函數(shù),LIMIT [offset,] rows從數(shù)據(jù)庫(kù)表中M條記錄開(kāi) ?????????始檢索N條記錄的語(yǔ)句為:
??????? SELECT * FROM 表名稱(chēng) LIMIT M,N
???????? 例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語(yǔ)句如下:
???????? select * from sys_option limit 10,20