三大主流數據庫sql server、mysql、oracle的分頁操作

在分頁中,我們需要設置幾個分頁所需要的變量
pageSize //每頁的記錄數
pageNow //當前所在頁

Sql server2000的分頁:

建表的SQL語句:
–創建學生表
create table student(
sid int primary key, –編號
sname varchar(20) not null, –姓名
sage int not null –年齡
)

問題:按sid由小到大排序,找出第3條到第8條記錄。
方案一:
–根據sid排序,取出前兩條記錄的sid
select top 2 sid from student order by sid
–根據sid排序除掉前兩條記錄後的前面6條記錄(也就是選出第3條到第8條記錄)
select top 6 * from student where sid not in (select top 2 sid from student order by sid) order by sid;

分頁:
select top pageSize * from student where sid not in (select top pageSize*(pageNow-1) sid from student order by sid) order by sid;

方案二:
—-根據sid排序,取出前兩條記錄的sid
select top 2 sid from student order by sid
–在前兩條記錄的基礎上求得最大的sid
select isnull(max(sid),0) from (select top 2 sid from student order by sid
–獲得第3條到第8條記錄
select top 6 * from student where sid>(select isnull(max(sid),0) from (select top 2 sid from student order by sid) A) order by sid

分頁:
select top pageSize * from student where sid>(select isnull(max(sid),0) from (select top pageSize*(pageNow-1) sid from student order by sid) A) order by sid

MySQL的分頁:

建表的SQL語句:
–創建學生表
create table student(
sid int primary key, –編號
sname varchar(20) not null, –姓名
sage int not null –年齡
)

問題:按sid由小到大排序,找出第3條到第8條記錄。
方案:
select * from student order by sid limit 2,3
注意:limit後面的兩個數分別表示從哪條記錄算起,查找幾條記錄,MySQL中記錄是從第0條開始算起

分頁:
Select * from student order by sid limit pageSize*(pageNow-1),pageSize

Oracle的分頁:

創建SQL語句:
create table student(
sid number primary key,
sname varchar2(20) not null,
sage number not null
)

問題:按sid由小到大排序,找出第3條到第8條記錄。
方案:
–按sid由小到大排序
select * from student order by sid
–在排好序的表中,選出前8條記錄
select t.,rownum rn from(select from student order by sid) t where rownum<=8
–然後再在上面的基礎上選出第3條到第8條記錄
select * from (select t.,rownum rn from(select from student order by sid) t where rownum<=8) where rn>=3

分頁:
select * from (select t.,rownum rn from(select from users order by id) t where rownum<=pageSize*pageNow) where rn>=(pageSize*(pageNow-1)+1);

發佈了86 篇原創文章 · 獲贊 42 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章