利用SQL语句对不同数据库进行高效果分页

2017-04-23 21:14 阅读 900 次 评论 2 条

1、SQL Server、Access数据库

这都微软的数据库,都是一家人,基本的操作都是差不多,常采用如下分页语句:

 

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id

 

select top PAGESIZE * from components where id not in

(select top (PAGESIZE*(CURRENTPAGE-1))

id from components order by id)order by id

 

如下列:

select top 10 * from components where id not in

(select top 10*10 id from components order by id)

order by id

从101条记录开始选择,只选择前面的10条记录

 

2、Oracle数据库

 

因为Oracle数据库没有Top关键字,所以这里就不能够像微软的数据据那样操作,这里有两种方法:

 

(1)、一种是利用相反的。

 

PAGESIZE:每页显示的记录数

CURRENTPAGE:当前页号

数据表的名字是:components

索引主键字是:id

 

select * from components where id not

in(select id from components where

rownum<=(PAGESIZE*(CURRENTPAGE-1)))

and rownum<=PAGESIZE order by id;

 

如下例:

select * from components where id not in

(select id from components where rownum<=100)

and rownum<=10 order by id;

 

从101到记录开始选择,选择前面10条。

 

(2)、使用minus,即中文的意思就是减去。

 

select * from components where rownum

<=(PAGESIZE*(CURRENTPAGE-1)) minus

select * from components where rownum

<=(PAGESIZE*(CURRENTPAGE-2));

 

如例:

select * from components where

rownum<=10 minus select * from components

where rownum<=5;.

 

(3)、一种是利用Oracle的rownum,这个是Oracle查询自动返回的序号,一般不显示,但是可以通过select rownum from [表名]看到,注意,它是从1到当前的记录总数。

 

select * from (select rownum tid,components.

 

* from components where rownum<=100) where tid<=10;

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:利用SQL语句对不同数据库进行高效果分页 | 猿笔记

发表评论


表情

  1. itdouzi.com
    itdouzi.com 【农民】 @回复

    网站做的很不错,收藏了,方便以后看看

  2. Sumwind
    Sumwind 【农民】 @回复

    博主网站可以啊