111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:3203回复:0

用标准的SQL语句实现查询记录分页-JSP教程,数据库相关

楼主#
更多 发布于:2011-01-08 20:47
在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。
目前主要有以下几中方式来实现分页:
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能换为所有能表识记录顺序的字段。
更多黑客技术 黑客软件 计算机技术 编程技术 网站技术 qq技术 IT新闻 黑客基地 请访问 灯火安全联盟  灯火黑客 www.hack8888.com/bbs

喜欢0 评分0
游客

返回顶部