`
dengwanchuan
  • 浏览: 47580 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据库sql分页

阅读更多


取出sql表中第3140的记录(以自动增长ID为主键)

sql server方案1

    select top 10 * from t where id not in (select top 30 id from t order by id ) orde by id

sql server方案2

    select top 10 * from t where id in (select top 40 id from t order by id) order by id desc

 

mysql方案:select * from t order by id limit 30,10

 

oracle方案:select * from (select rownum r,* from t where r<=40) where r>30

 

----------------------------------案例-------------------------------

pageSize=20;

pageNo = 5;

 

1.分页技术1(直接利用sql语句进行分页,效率最高和最推荐的)

 

mysql:sql = "select * from articles limit " + (pageNo-1)*pageSize + "," + pageSize;


oracle: sql = "select * from " +"(select rownum r,* from " + "(select * from articles order by postime desc)" +"where rownum<= " + pageNo*pageSize +") tmp " +"where r>" + (pageNo-1)*pageSize;


注释:第7行保证rownum的顺序是确定的,因为oracle的索引会造成rownum返回不同的值

简单提示:没有order by时,rownum按顺序输出,一旦有了order byrownum不按顺序输出了,这说明rownum是排序前的编号。如果对order by从句中的字段建立了索引,那么,rownum也是按顺序输出的,因为这时候生成原始的查询结果集时会参照索引表的顺序来构建。

 

sqlserver:sql = "select top 10 * from id not id(select top " + (pageNo-1)*pageSize + "id from articles)"

 

DataSource ds = new InitialContext().lookup(jndiurl);

Connection cn = ds.getConnection();

//"select * from user where id=?"  --->binary directive

PreparedStatement pstmt = cn.prepareSatement(sql);

ResultSet rs = pstmt.executeQuery()

while(rs.next())

{

       out.println(rs.getString(1));

}

 

2.不可滚动的游标

pageSize=20;

pageNo = 5;

cn = null

stmt = null;

rs = null;

try

{

sqlserver:sql = "select  * from articles";

 

DataSource ds = new InitialContext().lookup(jndiurl);

Connection cn = ds.getConnection();

//"select * from user where id=?"  --->binary directive

PreparedStatement pstmt = cn.prepareSatement(sql);

ResultSet rs = pstmt.executeQuery()

for(int j=0;j<(pageNo-1)*pageSize;j++)

{

       rs.next();

}

 

int i=0;

 

while(rs.next() && i<10)

{

       i++;

       out.println(rs.getString(1));

}

}

cacth(){}

finnaly

{

       if(rs!=null)try{rs.close();}catch(Exception e){}

       if(stm.........

       if(cn............

}

 

3.可滚动的游标

pageSize=20;

pageNo = 5;

cn = null

stmt = null;

rs = null;

try

{

sqlserver:sql = "select  * from articles";

 

DataSource ds = new InitialContext().lookup(jndiurl);

Connection cn = ds.getConnection();

//"select * from user where id=?"  --->binary directive

PreparedStatement pstmt = cn.prepareSatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,...);

//根据上面这行代码的异常SQLFeatureNotSupportedException,就可判断驱动是否支持可滚动游标

 

ResultSet rs = pstmt.executeQuery()

rs.absolute((pageNo-1)*pageSize)

int i=0;

while(rs.next() && i<10)

{

       i++;

       out.println(rs.getString(1));

}

}

cacth(){}

finnaly

{

       if(rs!=null)try{rs.close();}catch(Exception e){}

       if(stm.........

       if(cn............

}

分享到:
评论

相关推荐

    常用数据库sql分页

    数据库SQL分页技术 数据库分页是指从大规模的数据集中提取指定的记录数,以减少数据传输量,提高应用程序的性能和用户体验。常见的数据库管理系统包括MySQL、SQL Server、Oracle、DB2等,每种数据库管理系统都有其...

    三种数据库SQL分页方法详解

    ### 三种数据库SQL分页方法详解 在数据库查询过程中,分页是非常常见且重要的一个功能。它可以帮助我们更高效地处理大量数据,特别是在构建大型应用系统时,分页技术能够显著提升用户体验。本文将详细介绍三种...

    达梦数据库的基本操作以及分页查询等

    根据java语言对达梦DM数据库的连接和操作,包括建表、新增、修改、删除、查询以及复杂查询和分页查询等完整代码,附送Dm7Dictionary的驱动包,此驱动包兼容jdk1.7和jdk1.8本人亲测完美兼容

    易语言ACCESS数据库分页显示

    本话题主要关注的是使用易语言(Easy Language)实现ACCESS数据库的分页显示功能。易语言是中国本土开发的一款编程语言,以其直观、简单的语法设计,使得初学者也能快速上手编程。 首先,我们要理解什么是分页显示...

    mysql数据库实现分页

    在MySQL数据库中,分页是处理大量数据查询时不可或缺的一种技术。它允许用户按需加载数据,而不是一次性获取所有记录,从而提高了用户体验并降低了服务器负载。以下是对分页实现的详细说明: 一、基础概念 分页是将...

    几条常见的数据库分页SQL 语句

    几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。

    数据库分页SQL语句实现

    ### 数据库分页SQL语句实现 在开发MIS系统或Web应用系统时,经常会遇到对数据库进行分页处理的需求。这是因为数据量庞大时,一次性加载所有数据会给系统带来很大的负担,同时也会影响用户体验。因此,分页技术成为...

    数据库分页SQL

    常用数据库分页sql(),1.oracle数据库分页;2.DB2数据库分页;3.SQL Server 2000数据库分页;4.SQL Server 2005数据库分页5.MySQL数据库分页

    SQL 数据库实现分页技术教程

    ### SQL 数据库实现分页技术教程 #### 一、引言 随着互联网技术的发展,Web应用程序需要处理的数据量日益庞大。在数据展示方面,如果一次性加载过多的数据到前端页面,不仅会导致用户体验下降(如页面加载速度慢)...

    各数据库分页语法支持

    不同的数据库系统提供了不同的分页机制,本文将详细介绍几种常见数据库(Oracle、DB2、SQL Server、PostgreSQL)的分页语法支持,并给出具体的示例。 #### Oracle 数据库分页 Oracle 支持多种分页方式,包括三层...

    易语言MYSQL数据库分页查询

    总结来说,易语言结合MySQL数据库的分页查询是通过建立连接、构建分页SQL、执行查询、处理结果和关闭连接等一系列步骤来实现的。理解这些步骤,并结合数据库优化技巧,可以帮助开发者构建出高效、友好的数据展示系统...

    易语言源码access分页显示+成语词典.rar

    在易语言中,可以通过连接Access数据库,使用SQL查询语句来实现数据的分页获取。这通常涉及到游标、记录集等概念。源码中可能展示了如何设置查询条件、计算页数、获取每页数据的细节,以及如何在界面上更新数据显示...

    几种数据库常见分页sql

    本文将详细介绍在SQL Server、Oracle以及MySQL这三种常用数据库中实现分页查询的方法。 ### SQL Server 分页查询 #### 方法一:使用 `TOP` 关键字 SQL Server 提供了 `TOP` 关键字来进行分页查询。这种方式比较...

    orcl数据库分页源码通过数据库实现分页

    在Oracle数据库中,我们可以利用SQL查询的特定语法来实现分页。 Oracle数据库提供了两种主要的分页方法:ROWNUM和ROW_NUMBER()函数,以及Oracle 12c及更高版本引入的FETCH NEXT ... ROWS ONLY语法。 1. ROWNUM方法...

    Oracle的SQL分页实践

    在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...

    Qt数据库分页显示

    本教程将深入探讨如何在Qt应用中实现SQLite数据库的数据分页显示。 首先,我们需要在Qt项目中集成SQLite数据库支持。在Qt Creator中,新建一个Qt Widgets Application项目,然后在.pro文件中添加`QT += sql`来启用...

    LINQ To SQL实现分页效果源码

    总结来说,LINQ to SQL的分页功能结合了强大的查询表达能力和数据库操作的便利性,为.NET开发者提供了高效的数据访问解决方案。通过理解和实践这些步骤,你可以在你的应用程序中实现高效的分页功能。

    三种数据库利用SQL语句进行高效果分页

    本文将详细介绍如何在三种不同的数据库系统(SQL Server、Access、Oracle)中实现高效的SQL分页查询。 #### SQL Server 分页查询 SQL Server 支持 `TOP` 关键字,这使得在 SQL Server 中实现分页变得相对简单。...

    数据库真分页SQL语句

    数据库真分页是一种高效的数据检索技术,特别是在处理大数据集时,能够显著提高用户界面的响应速度,提升用户体验。传统的分页方法(如LIMIT和OFFSET)在处理大量数据时可能存在性能问题,因为它们需要扫描和跳过不...

    sql server分页技术(SQL Server 与Access数据库相关分页技术)

    在SQL Server中,分页技术是一项关键功能,尤其在处理大量数据时,它能有效地提高查询性能并优化用户体验。在Web应用中,分页通常用于显示数据库中的数据列表,避免一次性加载所有数据导致的性能问题。以下是几种...

Global site tag (gtag.js) - Google Analytics