成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

SQL server 2005的簡單分頁程序

2010-08-28 10:50:09來源:西部e網作者:

  SQL Server 2005增加了不少新特性,其中NTILE和ROW_NUMER使得我們不再為SQL如何靈活方便的分頁傷腦筋了(不必再羨慕Oracle等數據庫了)。

  下面就是一個很簡單的分頁查詢語句:

DECLARE @rows_per_page AS INTEGER
DECLARE @current_page AS INTEGER
DECLARE @total_pages AS INTEGER

-- 設置每頁的行數
SET @rows_per_page = 20
-- 設置要顯示的頁號(從1開始)
SET @current_page = 2
-- 計算總頁數
SELECT @total_pages = COUNT(*) / @rows_per_page
FROM testtable;

-- 列出指定頁的內容
WITH t AS
(
  SELECT NTILE(@total_pages) OVER(ORDER BY id) AS page_number, *
  FROM testtable
)
SELECT * from t
WHERE page_number = @current_page   

  程序簡單到可以不用說明的程度。

  我們可以利用上述簡單的語句,變化排序條件和查詢表,就可以做出一個很通用的分頁查詢的存儲過程或查詢語句了。

  同樣的,使用ROW_NUMBER也可以做到分頁查詢:

DECLARE @rows_per_page AS INTEGER
DECLARE @current_page AS INTEGER
DECLARE @start_row_num AS INTEGER

-- 設置每頁的行數
SET @rows_per_page = 20
-- 設置要顯示的頁號(從1開始)
SET @current_page = 2
-- 設置開始行號
SET @start_row_num = (@current_page - 1) * @rows_per_page

WITH t AS
(
  SELECT ROW_NUMBER() OVER(ORDER BY id) AS row_number, *
  FROM testtable
)
SELECT * from t
WHERE row_number BETWEEN @start_row_num AND @start_row_num + @rows_per_page  似乎更簡單的樣子。

  至于哪種效率更高,這需要大家實際測試了。

關鍵詞:SQLServer

贊助商鏈接:

主站蜘蛛池模板: 嘉峪关市| 安化县| 西林县| 金寨县| 砀山县| 宿迁市| 新余市| 开原市| 德格县| 冀州市| 印江| 池州市| 上栗县| 策勒县| 麻城市| 巫溪县| 阿城市| 安化县| 新竹县| 铁岭县| 名山县| 镇原县| 肃南| 侯马市| 鄂托克旗| 上犹县| 齐河县| 上蔡县| 青田县| 敖汉旗| 怀安县| 金沙县| 宝应县| 绥阳县| 桃江县| 库尔勒市| 陆川县| 水城县| 大姚县| 道孚县| 昌黎县|