MySql,Sqlserver,Oracle數據的分頁語句

在實際項目中分頁是常見的不能再說了,這裏我總結了MySql,SqlServer,Oracle這三個數據庫的sql分頁語句

在這三個數據庫中,個人覺得MySql的分頁語句是最簡單的,只用一個limit關鍵字就能完成

MySql數據庫:

select  * from test limit 5,5;

test:表名

第一個參數5:從表中的第幾行開始查,從0開始數

第二個參數5:查詢出多少條記錄

在項目中運用時,如果一個頁面指定了顯示多少條記錄,通常第二個參數不會改變,都是該變的第一個參數

計算每頁的公式:這裏都是每頁顯示5條記錄

第一頁:(1-1)*5

第二頁:(2-1)*5

第三頁:(3-1)*5

第N頁:(n-1)*5

公式:

開始的行數=(當前頁-1)*每頁顯示的行數

所以最後在代碼中的sql語句可以寫爲:

int pageSize=5;//每頁顯示行數

int pageNo=4;//當前頁

int num=(pageNo-1)*pageSize;//開始查找的行

select * from test limit num,pageSize;

我瞭解的MySql數據的分頁語句就只有這一種了


在SqlServer數據庫中目前我瞭解的sql分頁語句有兩種

第一種:


select top(5) * from test 
	where id not in(
		select top((2-1)*5) id from test
	)


第二種:

select * from(
	select ROW_NUMBER() Over(order by id) as rownum,* from test
	) t 
where rownum between (2-1)*5+1 and 2*5


在Oracle數據庫中我瞭解的一隻有兩種:

第一種:

select * from (

          select t.*,rownum rn from emp t

          ) t1

where rn>(2-1)*3 and rn<=2*3

也可以使用between

select * from (
      select t.*,rownum rn from emp t
      )
where rn between (2-1)*3+1 and 2*3

第二種:

select * from (
       select t.*,rownum rn from (
              select * from emp
       )t where rownum<=2*3
) where rn>(2-1)*3

這兩種比較起來,個人認爲第一種查詢相對比較快,因爲第一種只查詢了兩次,而第二種查詢的三次

至於怎樣使用,看個人比較適合哪一種了






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章