科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用标准的SQL语句实现查询记录分页

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月2日

关键字: 分页 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。但往往搜索会返回大量的数据记录,如果在网页中,往往是通过分页的方式来实现,页面提供诸如上一页,下一页等等按钮来实现分页。 \6w *j{~  
现在主要有以下几中方式来实现分页: 18sS"$ib.  
1.EJB的Find方法 RebYRsc0w  
2.在显示第一页前将所有的记录放在collection对象中,后续的各页都在内存中取。 3$2NE<]!  
3.每一页都到数据库作一次重复的查询,然后将符合条件的记录显示出来。 ` k/d?  
4.保存前几页的搜索结果在内存中(经常使用到的),后续的记录(这些数据是多数用户都没有耐心看的)再通过连数据库取得。 R\lQ`M:-  
5.其他各种cache机制。 \?u 1Y4  
'e!o>g e?g  
我们可以根据实际情况来选择适合自己的方法,我给大家介绍一个通过标准的SQL语句来得到符合条件的数据。如从第10到20条的符合条件(where语句中的)的记录。通过这种方法取得记录有一个必要条件,必须有一个能够标识记录顺序的字段,如id,time等等。下面我为大家演示一个例子: {RZ}8J7  
查询t_table表中所有记录第10到20条,按id排序。 HF; cp  
SQL语句为: Wy12;iuCf  
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 7P@<Yn  
C!vn{_b4 <  
又如查询t_table表中key='123'第10到20条的记录,按id排序。 _L{#~B  
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' ~;7s}S%/6  
YHMlWyc  
当然条件中的id可以换为任何能表识记录顺序的字段。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章