用标准的SQL语句实现查询记录分页

原创 2005年05月28日 17:56:00
在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。
现在主要有以下几中方式来实现分页:
1.EJB的Find方法
2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。
3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。
4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。
5.其他各种cache机制。

我们可以根据实际情况来选择适合自己的方法,我给大家介绍一个通过标准的SQL语句来得到符合条件的数据。如从第10到20条的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子:
查询t_table表中所有记录第10到20条,按id排序。
SQL语句为:
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id ) < 20

又如查询t_table表中key='123'第10到20条的记录,按id排序。
SELECT * FROM t_table t1 WHERE (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') >= 10 AND (SELECT count(*) FROM t_table t2 WHERE t2.id < t1.id AND t2.key = '123') < 20 AND t1.key = '123'

当然条件中的id可以换为任何能表识记录顺序的字段。

用标准的SQL语句实现查询记录的分页

在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页...
  • jlhnxly
  • jlhnxly
  • 2012年07月03日 10:45
  • 1758

通过sql语句查询实现分页

通过sql语句分页 如:SELECT * FROM users limit 3,2 从第4条记录开始后续显示两行,索引从0开始 (服务器机制)该方式的优缺点如下:   优点:操作便捷(利用服务器内存...

SqlServer2005高效分页sql查询语句汇总

sqlserver2005不支持关键字limit ,所以它的分页sql查询语句将不能用mysql的方式进行,幸好sqlserver2005提供了top,rownumber等关键字,这样就能通过这几个关...

通用的可带查询条件的SQL语句的分页存储过程(2)

代码二: CREATE PROCEDURE pagination @tblName varchar(255), – 表名 @strGetFields varchar(1000) = ‘...
  • tlammon
  • tlammon
  • 2016年03月25日 10:10
  • 834

又一个通用分页存储过程,支持表别名,多表联合查询SQL语句--转载

好久没有上来写点东西了,今天正好有空,共享一些个人心得,就是关于分页的存储过程,这个问题应该是老生重谈了,网上的通用存储过程的类型已经够多了,但是,好象看到的基本上不能够满足一些复杂的SQL语句的分页...
  • ty_soft
  • ty_soft
  • 2012年02月21日 14:50
  • 419

SqlServer2005高效分页sql查询语句汇总

sqlserver2005不支持关键字limit ,所以它的分页sql查询语句将不能用mysql的方式进行,幸好sqlserver2005提供了top,row number等关键字,这样就能通过这几个...

MyBatis中实现动态的SQL语句,分页以及mybatis的常用的配置

1.动态SQL:在SQL语句中加入流程控制。比如加入if,foreach等。  重点掌握if语句:  案例1:...

SQL实现分页(通过PHP)以及增删改查核心语句

连接数据库 $dbHost="localhost"; $dbUserName="root"; $dbPWD="123456"; $dbName="mentholatum"; $char_code="u...
  • momDIY
  • momDIY
  • 2016年12月06日 09:33
  • 613
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用标准的SQL语句实现查询记录分页
举报原因:
原因补充:

(最多只允许输入30个字)