天天看點

sqlserver/mysql/oracle實作sql語句分頁方法

  SQL Server

從資料庫表中的第M條記錄開始取N條記錄,利用Top關鍵字:注意如果Select語句中既有top,又有order by,則是從排序好的結果集中選擇:

 SELECT *

   FROM  ( SELECT Top N *

         FROM    (SELECT Top (M + N - 1) * FROM 表名稱 Order by 主鍵 desc) t1 ) t2

              Order by 主鍵 asc

 例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:

     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資料庫

從資料庫表中第M條記錄開始檢索N條記錄

     SELECT *

           FROM (SELECT ROWNUM r,t1.* From 表名稱 t1 where rownum < M + N) t2

           where t2.r >= M

     例如從表Sys_option(主鍵為sys_id)中從10條記錄還是檢索20條記錄,語句如下:

      SELECT *

           FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2

            Where t2.R >= 10

   My sql資料庫

MySQL實作資料分頁依靠的是limit這個屬性!

1. 标準查詢語句:

select * from table(表名) limit startPos,pageSize

小結:

1.startPos:定義目前頁起始位置 注意:目前頁的起始位置隻能在目前頁确定之後才能定義;

2.pageSize:定義每頁顯示資料的條數

3.如果給定2個參數,第一個指定要傳回的第一行的偏移量,第二個指定傳回行的最大數目。初始行的偏移量是0(不是1)。

如:select * from table LIMIT 5,10;           這個查詢出來的是第6到15之間的10條資料

 如果給定一個參數,它指出傳回行的最大數目。

如:select * from table LIMIT 5;                 這個查詢出來的是前5條資料

(LIMIT n等價于LIMIT 0,n

繼續閱讀