close
來源: http://www.ravs.ntct.edu.tw/know/show.asp?questionid=140
假設:
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條記錄大法就些完畢
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關鍵字應該就可以就地運行了
此SQL語句的關鍵應用技巧在於union all和分組上的條件過濾語句
大家可以根據此技巧完全可以做出一個通用的分頁方法,如直接由用戶傳入sqlstr(sql語句),NumPerPage(每頁顯示數),currpage(目前頁),自己在再函數內組織成通成的SQL分頁語句
備注:
目前頁為1的話就不需要運行該SQL了,直接TOP一下就OK了
由於沒有環境,該SQL性能無法測試,但相信不會低效
運行平臺在access,sqlserver上都可運行,其它資料庫平臺只需改top關鍵字應該就可以就地運行了
全站熱搜