Oracle、 Mysql 、 SQLserver 分页查询 您所在的位置:网站首页 oracle查看某张表大小 Oracle、 Mysql 、 SQLserver 分页查询

Oracle、 Mysql 、 SQLserver 分页查询

2023-06-08 00:09| 来源: 网络整理| 查看: 265

MYSQL 分页最简单了. SELECT * FROM Account  WHERE (usertype='base' or usertype='home' or usertype='salse')  and logindate is not null order by logindate desc LIMIT 起始行, 每页多少行 LIMIT 接受一个或两个数字参数。 参数必须是一个整数常量。 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目。 初始记录行的偏移量是 0(而不是 1)

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 procedure 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

Oracle分页查询语句(一) Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。

分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM = 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM = 21控制分页查询的每页的范围。

上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有