Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
通栏广告
数据库分页-5

前面讲的几种分页方法,综合效率与适用性来讲,B1 是最好的。但能不能对 B1 继续改进呢,可以的。

假设有一个新闻表,按 id 的逆序分页排列。

select *
    from (select top 页大小 * 
              from (select top 当前页*页大小 * from news order by id desc) a  
              order by a.id) b
    order by b.id desc
  • 先逆序取得当前页及之前的所有记录。
  • 再正序取出当前页的记录。
  • 将当前页的记录逆序排列得最终的排列结果。

这种 SQL 语句可能不适合于 Access,上述“当前页*页大小”应该是计算好才能进入 SQL,而不是在 SQL 中计算乘积。

其实上述 SQL 还是需要改进的,想想页大小为 2,总记录数为 3,根据上述 SQL 语句,在第二页时也显示两条记录,原因是第二个 select 选取的是页大小,应该先取出总记录数,再计算出当前页的大小(实际上除了最后一页,其它各页都是一样的)。语句改为:

select *
    from (select top 当前页大小
              from (select top 当前页*页大小 * from news order by id desc) a  
              order by a.id) b
    order by b.id desc
相关文章
文章评论
标题:必填
内容:
文章信息