sqlserver的幾個分頁語句

2021-08-13 18:48:38 字數 1517 閱讀 1692

使用內建的row_number() over() 函式

select top 頁大小 * 

from

(select row_number() over (order

by id) as rownumber,* from table1

) as a

where rownumber > 頁大小*(頁數-1)

//例如:

select top 50 * from

(select row_number()over(order

by id)rownumber,* from [dbo].[mtbusideal]) a

where rownumber>50

注意row_number() over()是sql 2005以後才有的函式,相容上需要注意

2.top/max 實現分頁

select top 頁大小 *

from table1

where id >

(select isnull(max(id),0)

from

(select top 頁大小*(當前頁-1) id from table1 order

by id

) as a

)order

by id

//例如:

select top 50 *

from [mtbusideal]

where id >

(select isnull(max(id),0)

from

(select top 0 id from [mtbusideal] order

by id

) as a

)order

by id

這個方案雖然解決了相容的問題,而且效率也很高。但是有個問題,如果乙個遞增的id這個方案是不完美的

3.top/not in 實現

select top 頁大小 *

from table1

where id not

in (

select top 頁大小*(當前頁-1) id from table1 order

by id

)order

by id

//例如

select top 50 *

from [mtbusideal]

where id not

in (

select top 0 id from [mtbusideal] order

by id

)order

by id

這種方法雖然效率略低,但是實現相容和根據非遞增鍵分頁的功能,也許能用到

總結:哪個好合適用哪個 (ง •̀_•́)ง┻━┻

MySQL Oracle分頁查詢的SQL語句

1.mysql分頁查詢的sql語句 關鍵字 limit select from sys user order by user id limit 0,5 0 第一條資料的位置,mysql是從0開始的 例如第二頁的話就是 limit 5,5 5 每一頁展示資料的條數 開始的位置 int beginnum...

SQLServer 的資料分頁

sqlserver 的資料分頁 假設現在有這樣的一張表 create table test id int primary key not null identity,names varchar 20 然後向裡面插入大約1000條資料,進行分頁測試 假設頁數是10,現在要拿出第5頁的內容,查詢語句如下...

SQL Server中的分頁

sqlserver2000時的分頁思路 1.分頁查詢時,首先將資料排序 select from mystudent order by fid desc 2.取第一頁資料 select top5 from mystudent order by fid desc 3.取第二頁資料 select top5...