<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP學習:史上最強的數據分頁方法

      [摘要]我觀前輩的帖子,皆由于數據庫的SQL大不一致,且SQL SERVER,ACCESS等菜鳥級數據庫沒有如rowid,_n_,obs等之類的輔助列,空有BETWEEN運算符而無用武之地,又無如excep...

      我觀前輩的帖子,皆由于數據庫的SQL大不一致,且SQL SERVER,ACCESS等菜鳥級數據庫沒有如rowid,_n_,obs等之類的輔助列,空有BETWEEN運算符而無用武之地,
      又無如except之類的數據集運算符,真是令無數英雄盡折腰
      偶詳觀各數據庫SQL,得出是數據庫就有取前面N條記錄的SQL語法,如什么select top n*****之類的語法,而數據分頁的關鍵問題是取后N條記錄的語法偶深思良久,最后小悟,故出此言,還忘前輩們多多指點取記錄集后N條記錄的大法:

      假設:

      1.有一sql語句將產生1000條記錄 (select 唯一ID,其他字段 from 表集 where 條件 order by 排序)
      2.每頁顯示20條記錄
      3.當前顯示第5頁

      實現如下:
      select * from
      (
      select * from (select top 20*4 唯一ID,其他字段 from 表集 where 條件 order by 排序) as a
      union all
      select * from (select top 20*5 唯一ID,其他字段 from 表集 where 條件 order by 排序) as b
      )
      a
      group by 唯一ID,其他字段 having count(唯一ID)=1 order by 排序

      運行此SQL,至此取記錄集后N條記錄大法就些完畢

      詳細說明:

      此SQL語句的關鍵應用技巧在于union all和分組上的條件過濾語句

      大家可以根據此技巧完全可以做出一個通用的分頁方法,如直接由用戶傳入sqlstr(sql語句),NumPerPage(每頁顯示數),currpage(當前頁),自己在再函數內組織成通成的SQL分頁語句

      備注:

      當前頁為1的話就不需要運行該SQL了,直接TOP一下就OK了
      由于沒有環境,該SQL性能無法測試,但相信不會低效
      運行平臺在access,sqlserver上都可運行,其它數據庫平臺只需改top關鍵字應該就可以就地運行了(出處:PConline)


      日韩精品一区二区三区高清