分頁的使用

 

先準備範例資料表

CREATE TABLE PERSON 
  ( 
     no   TINYINT NOT NULL, 
     name NVARCHAR(10) NOT NULL, 
     sex  NVARCHAR(5) NOT NULL, 
     age  TINYINT NOT NULL, 
     PRIMARY KEY (no) 
  ) 



INSERT PERSON (no,name,sex,age) VALUES (1,'Bill','boy',39); 
INSERT PERSON (no,name,sex,age) VALUES (2,'Mary','girl',54); 
INSERT PERSON (no,name,sex,age) VALUES (3,'Hen','boy',20); 
INSERT PERSON (no,name,sex,age) VALUES (4,'Junet','girl',20); 
INSERT PERSON (no,name,sex,age) VALUES (5,'Tom','boy',20); 
INSERT PERSON (no,name,sex,age) VALUES (6,'Izesuber','girl',10); 
INSERT PERSON (no,name,sex,age) VALUES (7,'Tim','boy',32); 
INSERT PERSON (no,name,sex,age) VALUES (8,'Kimberray','girl',40); 
INSERT PERSON (no,name,sex,age) VALUES (9,'Brown','boy',33); 
INSERT PERSON (no,name,sex,age) VALUES (10,'Rose','girl',29);

 

SQL指令格式:「OFFSET n ROWS FETCH NEXT n ROWS ONLY」

範例1、忽略第一筆資料後,再開始只取五筆資料出來

SELECT no,NAME,sex,age 
FROM   PERSON 
ORDER  BY no 

SELECT no,NAME,sex,age 
FROM   PERSON 
ORDER  BY no 
OFFSET 1 ROWS FETCH NEXT 5 ROWS ONLY

 

範例2、只忽略第一筆資料後,秀出剩下的資料

SELECT no,NAME,sex,age 
FROM   PERSON 
ORDER  BY no 

SELECT no,NAME,sex,age 
FROM   PERSON 
ORDER  BY no 
OFFSET 1 ROWS

 

注意,「OFFSET n ROWS FETCH NEXT n ROWS ONLY」必須跟ORDER BY配合,

否則會有「FETCH 陳述式中的選項 NEXT 使用方式無效。」錯誤。

 

另外「FETCH NEXT n ROWS ONLY」必須跟ORDER BY與「OFFSET n ROWS」配合,

否則也會出錯。

 

參考資料:

SQL Server 2012 :分頁處理:認識 OFFSET 和 FETCH 子句