資料庫分頁查詢
1. 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 procere 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
2. Access資料庫分頁查詢,效率sql語句
in的效率太低,不能利用索引,建議使用:
select top 每頁數量 * from 表 where id >(select top 1 max(id) from (select top (頁數-1)*每頁數量 from 表 order by id,name)) 或
select top 每頁數量 * from 表 where id <(此處根據順序和逆序)
3. oracle資料庫分頁查詢,
ROWNUM是偽列,只能<=,不能>=
所以需要給ROWNUM起個別名,變成邏輯列後來比較
select *
from (select rownum as num,a.* from (select * from test order by 1 asc) a) t
where t.num>=20
and t.num<=40;
你寫的可以修改為:
select *
from (select ROWNUM as num,A.* from (select * from test) A where rownum <= 40)
where num >= 20;
4. 資料庫 分頁是什麼意思
資料庫分頁也是在資料庫里寫查詢語句,不同的是查詢的都是指定條數到指定條數的數據,不是一次性把數據全查出來。
5. 資料庫表裡如果數據行數很多,做分頁查詢,SQL如何書寫
mysql用limit start,rows
sqlite 用 limit rows offset start
其他的也差不多 比較惡心的就是oracle和sqlserver 要嵌套查詢
6. 資料庫SQL查詢分頁問題
with pagnation as
(
select pk_psn,psnname,age row_number() over(order by age) as rowNum
from 表名
)
select top 10 * from pagnation where rowNum>10*(page-1) --表示10你每頁顯示條數,page你的頁數
你可以參考一下
http://hi..com/haifeng_4216/blog/item/515711f933c3cd50242df228.html
http://hi..com/haifeng_4216/blog/item/e0a6512577d24d6e35a80f2e.html
7. MySql中查詢語句實現分頁功能
pageNow代表當前頁面,第一頁。
8. 怎樣實現資料庫的分頁查詢
針對查詢語句做處理,同時對請求頁面地址做分析
list.aspx?pageid=5 //表示訪問第五頁
後台語言里,先對查詢條件做預處理
pagepre=pagesize*4 //pagesize 用於表示分頁大小,例如10,則前4頁共有40條記錄
查詢語句
sqlcmd="select top "+pagesize+" from tabelname where id not in (select top "+pagepre+" from tablename order by id desc)"
操作原理為將當前頁前顯示的所有記錄從數據查詢結果中排除,也就是not in 後面的部分,然後從剩餘的結果沖,讀取pagesize大小的記錄值。篩選條件、排序條件放在子查詢中
9. 如何用sql語句 實現分頁查詢
適用於 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id NOT IN
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
10. sql 分頁查詢 資料庫高手請進
請樓主在前台語言中實現。