① 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
② 關於分頁查詢的sql語句
這里的K不僅僅是個別名的作用,他把 (select *,row_number() over(order BY UserID) rowIndex from userinfo)做為一個表來查詢 ,如果不加則作為一個查詢結果集,SQL無法再查詢結果集上在進行查詢
③ 求SQL分頁的語句
2個參數Start end
start 開始 end 結束
例如第二頁從Start11條開始 結束end 21百
select * from (select rownum a,NEWS.* from NEWS where rownum<='"+end+"') b where b.a>'"+start+"'"
方法2 select * from NEWS limit a,b
a就是從第幾條開始 b就是查詢出的條數
例如 從第10條開始後的10條select * from NEWS limit 10,10
從第6條開始後的8條select * from NEWS limit 6,8
④ sql語句分頁詳解
這就是一個簡單的查詢語句,一個語句分為select 與 from 之間的部分,from 與 where之間的部分 和where 後邊條件部分。
from 後跟的是表,
你說的a,b就是表名。只不過 是把(select top 20 主鍵欄位,排序欄位 from 表名 order by 排序欄位 desc)查詢的結果作為表a了。
⑤ 如何使用sql語句進行分頁操作
sql語句是不能進行分頁操作的,它只查出一個相應條件的數據記錄集。而分頁操作,是由程序員用相應的軟體開發語言設計演算法,而過進行分頁操作。謝謝
⑥ 如何用sql語句 實現分頁查詢
適用於 SQL Server 2000/2005
SELECT TOP 頁大小 *
FROM table1
WHERE id NOT IN
SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
⑦ java中資料庫中實現分頁的sql語句要求每頁十條要查詢的是第二頁
1、首先preparedstatement是statement的子介面,屬於預處理操作,與直接使用statement不同的是,preparedstatement在操作的時候,先在數據表中准備好了一條sql語句,但是sql語句的值暫時不設置,而是之後設置。
⑧ 在oracle資料庫中的分頁SQL語句怎麼寫
前提:
分頁參數:size = 20 page = 2;
沒有order by的查詢;
嵌套子查詢,兩次篩選(推薦使用)。
SQL語句:
SELECT *
FROM (SELECT ROWNUM AS rowno, t.*
FROM DONORINFO t
WHERE t.BIRTHDAY BETWEEN TO_DATE ('19800101', 'yyyymmdd')
AND TO_DATE ('20060731', 'yyyymmdd')
AND ROWNUM <= 20*2) table_alias
WHERE table_alias.rowno > 20*(2-1);
(8)分頁的sql語句擴展閱讀:
rownum總是從1開始的,第一條不滿足去掉的話,第二條的rownum 又成了1。依此類推,所以永遠沒有不滿足條件的記錄。
可以這樣理解:rownum是一個序列,是Oracle資料庫從數據文件或緩沖區中讀取數據的順序。它取得第一條記錄則rownum值為1,第二條為2。
依次類推:當使用「>、>=、=、between...and」這些條件時,從緩沖區或數據文件中得到的第一條記錄的rownum為1,不符合sql語句的條件,會被刪除,接著取下條。下條的rownum還會是1,又被刪除,依次類推,便沒有了數據。
⑨ 一個分頁的SQL語句問題
假設:
pagecount=30 --每頁顯示的記錄數
Currentpage=3 --當前頁碼
select top 30 ID,Title from books
where Publisheris =(....)
and id not in (select top 30*(3-1) id from books where Publisherid =(...) order by id)
order by id
(...) 跟你那個一樣,就不寫了,兩處都是一樣的
你的錯誤是在id not in中沒有加那個(...)的條件
⑩ 求一條sql分頁語句。
--sql server可以創建一個存儲過程來實現:
create proc AAA @a int,@b int
as
select top @a *
from (select top @b * from table_1 order by id asc) table_2
order by id desc
--執行存儲過程
exec AAA '@a','@b'