您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> js >> 正文

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

作者:作者:未…    信息学院来源:网络收集    点击数:    更新时间:2006-8-27 我要参与讨论

  在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。
现在主要有以下几中方式来实现分页:
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可以换为任何能表识记录顺序的字段。

在google里搜索更多用标准的SQL语句实现查询记录分页

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

推荐文章
  • 此栏目下没有推荐信息学院
  • 供求信息




    | 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明