본문 바로가기

데이터베이스/MSSQL

MSSQL 2005 이상 버전부터 사용 가능한 PAGING

2000 에서 사용할때 rowcount / top 를 주로 사용해 구현해 왔던 paging 을 2005에서 row_number 집계함수를 사용해서 쉽게

할수 있게되었군요~

 

우선 테이블 만들기

 

CREATE TABLE T_Test
(
 id int PRIMARY KEY ,
 nick nchar(10),
 age int,
 context nchar(10)
)
go

 

테스트 데이터 넣기

insert into T_Test ( id, nick, age, context ) values( 1, '110', 110, 'test' );

insert into T_Test ( id, nick, age, context ) values( 2, '20', 20, 'test' );
insert into T_Test ( id, nick, age, context ) values( 3, '40', 40, 'test' );
insert into T_Test ( id, nick, age, context ) values( 4, '100', 100, 'test' );
insert into T_Test ( id, nick, age, context ) values( 5, '140', 140, 'test' );
insert into T_Test ( id, nick, age, context ) values( 6, '10', 10, 'test' );
go

Paging 쿼리

 

DECLARE @PageNum AS INT;
DECLARE @PageSize AS INT;

SET @PageNum = 1;
SET @PageSize = 2;

WITH Paging AS
(
 SELECT ROW_NUMBER() OVER( ORDER BY [age] ) AS RowNum, [id], [nick], [age], [context]
 FROM [dbo].[T_Test]
)

SELECT *
FROM Paging
WHERE RowNum BETWEEN (@PageNum - 1)*@PageSize+1 AND @PageNum * @PageSize
ORDER BY [age];


go

ROW_NUMBER 집계함수