如何用sql語句 實現分頁查詢
方法1:
適用于 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id NOT IN
(
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
)
ORDER BY id
方法2:
適用于 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id >
(
SELECT ISNULL(MAX(id),0)
FROM
(
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
) A
)
ORDER BY id
方法3:
適用于 SQL Server 2005
SELECT TOP 頁大小 *
FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
) A
WHERE RowNumber >頁大小*(頁數-1)
Oracle中分頁查詢語句怎么寫
oracle分頁有通用寫法,假設一頁5行select * from ( select t.*,rownum from ( select * from table1 where condition order by column) t ) where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5如果基礎查詢不需要排序,可以省掉一層嵌套select * from ( select t.*,rownum from table1 t where condition ) where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5。
如何用sql語句 實現分頁查詢
分頁:一般會把當前頁通過get方式傳遞,PHP通過$_GET['page']接收。
查詢:可以從當前乘以每頁顯示數通過limit來實現分頁效果。 //每頁顯示條數 $pageSize = 10; //當前頁 $_GET['page']?$page = 1:$page = $_GET['page']; //開始查詢位置 $seat = $page * $pageSize; //sql語句 $sql = "select * from table limit $seat, $pageSize"; //輸出數據到view即可。
Oracle的分頁查詢語句是怎樣的
分頁查詢格式: SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM = 21 其中最內層的查詢SELECT * FROM TABLE_NAME表示不進行翻頁的原始查詢語句。
ROWNUM = 21控制分頁查詢的每頁的范圍。 上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。
分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在WHERE ROWNUM = 21 以上是我對于這個問題的解答,希望能夠幫到大家。
SQL Server 分頁 查詢語句
四種方式實現SQLServer 分頁查詢
SQLServer 的數據分頁:
假設現在有這樣的一張表:
CREATE TABLE test
(
id int primary key not null identity,
names varchar(20)
)
然后向里面插入大約1000條數據,進行分頁測試
假設頁數是10,現在要拿出第5頁的內容,查詢語句如下:
--10代表分頁的大小
select top 10 *
from test
where id not in
(
--40是這么計算出來的:10*(5-1)
select top 40 id from test order by id
)
order by id
原理:需要拿出數據庫的第5頁,就是40-50條記錄。首先拿出數據庫中的前40條記錄的id值,然后再拿出剩余部分的前10條元素
第二種方法:
還是以上面的結果為例,采用另外的一種方法
--數據的意思和上面提及的一樣
select top 10 *
from test
where id >
(
select isnull(max(id),0)
from
(
select top 40 id from test order by id
) A
)
order by id
原理:先查詢前40條記錄,然后獲得其最id值,如果id值為null的,那么就返回0
然后查詢id值大于前40條記錄的最大id值的記錄。
這個查詢有一個條件,就是id必須是int類型的。
第三種方法:
select top 10 *
from
(
select row_number() over(order by id) as rownumber,* from test
) A
where rownumber >40
原理:先把表中的所有數據都按照一個rowNumber進行排序,然后查詢rownuber大于40的前十條記錄
這種方法和oracle中的一種分頁方式類似,不過只支持2005版本以上的
第四種:
存儲過程查詢
創建存儲過程
alter procedure pageDemo
@pageSize int,
@page int
AS
declare @temp int
set @temp=@pageSize*(@page - 1)
begin
select top (select @pageSize) * from test where id not in (select top (select @temp) id from test) order by id
end
執行存儲過程
exec 10,5
數據庫分頁查詢語句
有個公式$pageSIze=$_GET['pageSize'];$page = $_GET['page'];"select * from t limit {$pageSize * ($page-1)},{$pageSize}"意思就是說算下我要取多少條,從哪一條開始算起$pageSize * ($page-1) 這個是從哪一條開始取---------------------------------------------------------------- limit 開始的位置, 多少條limit是按照條數算的,不是ID算的。