資料庫 分頁SQL操作

2021-09-17 21:28:53 字數 2204 閱讀 6884

1.原理:要實現分頁,必須知道某一頁的資料從**開始到**結束。

頁面大小:每頁顯示的資料量

2.分頁

(1)mysql實現分頁的sql(從0開始計數):

mysql實現分頁的sql:

limit  開始,多少條

第0頁select * from student limit 0,10 ;

第1頁select * from student limit 10,10 ;

第2頁select * from student limit  20,10 ;

第n頁select * from student limit n*10,10

select * from student limit 頁數*頁面大小,頁面大小

(2)oracle實現分頁的sql(從1開始計數):--首先和mysql不同,oracle沒有limit語法,實現相對比較複雜。

下面將寫出分頁操作的推導過程(即為什麼這樣寫)

a.sqlserver/oracle:從1開始計數

第n頁        開始        結束

1        1        10

2        11        20

3        21        30

n        (n-1)*10+1    n*10

select *from student  where sno >=(n-1)*10+1 and sno <=n*10 ;  

--此種寫法的前提:必須是id連續 ,否則 無法滿足每頁顯示10條資料

b.select rownum,t.*from student t where rownum >=(n-1)*10+1 and rownum <=n*10  order by sno;

--1.如果根據sno排序則rownum會混亂(解決方案:分開使用->先只排序,再只查詢rownum)

--2.但是rownum不能查詢》的資料

【oracle】rownum的用法

select s.* from student s order by sno asc;

select rownum, t.* from

(select s.* from student s order by sno asc) t 

where rownum >=(n-1)*10+1 and rownum <=n*10 ; 

select *from 

(select rownum r, t.* from

(select s.* from student s order by sno asc) t         

)where r>=(n-1)*10+1 and <=n*10  ;           

(3)  sqlserver實現分頁的sql(從1開始計數):

a.row_number()    over(字段) ;

select *from 

(select row_number()  over (sno order by sno asc) as r,* from student       

where r<=n*10 

)where r>=(n-1)*10+1 and  ;    

b.sqlserver2003:top  --此種分頁sql存在弊端(如果id值不連續,則不能保證每頁資料量相等)

select top 頁面大小 * from student where id not in 

( select top (頁數-1)*頁面大小 id from student  order by sno asc )

c.sqlserver2005之後支援:

offset fetch next only

select * from student  oreder by sno 

offset (頁數-1)*頁面大小+1  rows fetch next 頁面大小  rows only ;

sqlserver此種分頁sql與oralce分頁sql的區別:

1.rownum  ,row_number()   名稱上的差別

2.oracle需要排序(為了排序,單獨寫了乙個子查詢),但是在sqlserver 中可以省略該排序的子查詢  因為sqlserver中可以通過over直接排序

SQL 資料庫分頁技術

分頁方案一 利用not in和select top分頁 語句形式 select top 10 from testtable where id not in select top 20 id from testtable order by id order by id select top 頁大小 f...

資料庫分頁查詢SQL

總結一下關於oracle和mysql的分頁查詢語句 mysql的分頁查詢是最簡單的,借助關鍵字limit即可實現查詢,查詢語句通式 oracle的分頁查詢方法相對來說要多點,主要介紹倆種查詢方式 rownum row number rownum查詢分頁通式 firstindex 起始索引 pages...

資料庫操作sql

一 資料庫的建立 1 建立乙個名稱為mydb1的資料庫 create database mydb1 2 建立乙個使用utf8字符集的mydb2資料庫。create database mydb2 character set utf8 3 建立乙個使用utf8字符集,並帶比較規則的mydb3資料庫。cr...