SELECT ROW_NUMBER () OVER (ORDER BY [정렬할 컬럼명] ASC|DESC) AS 지정할 컬럼명 , 컬럼명1,...
FROM [테이블명]
ORDER BY [정렬할 컬럼명] -- 생략 가능
ROW_NUMBER를 사용하면 임의로 조회 순번을 매겨준다
--왼쪽
SELECT ROW_NUMBER()OVER(ORDER BY ID ASC)AS ROWNUM,CONTENTS
FROM TEST_DB
--오른쪽
SELECT ROW_NUMBER()OVER(ORDER BY ID DESC)AS ROWNUM,CONTENTS
FROM TEST_DB
SELECT TOP(5)ID,ROW_NUMBER()OVER(ORDER BY ID ASC) AS ROWNUM,CONTENTS
FROM TEST_DB
WHERE ID > 0
ORDER BY ID ASC
CREATE PROCEDURE [dbo].[SP_PAGING2]
@PAGE_NO INT
,@PAGE_SIZE INT
AS
BEGIN
SET NOCOUNT ON
;WITH CTE_TABLE AS
(
SELECT ROW_NUMBER()OVER(ORDER BY ID ASC)AS ROWNUM,ID,CONTENTS
FROM TEST_DB
)
SELECT *
FROM CTE_TABLE
WHERE ROWNUM BETWEEN ((@PAGE_NO-1) * @PAGE_SIZE) + 1 AND @PAGE_NO*@PAGE_SIZE
SET NOCOUNT OFF
END
EXEC [SP_PAGING2] @PAGE_NO = 2, @PAGE_SIZE = 5
CREATE PROCEDURE [dbo].[SP_PAGING3]
@PAGE_NO INT
,@PAGE_SIZE INT
AS
BEGIN
SET NOCOUNT ON
SELECT TOP(@PAGE_SIZE)*
FROM TEST_DB
WHERE ID NOT IN(
SELECT TOP ((@PAGE_NO-1)*@PAGE_SIZE) ID
FROM TEST_DB
ORDER BY ID ASC
)
ORDER BY ID ASC
SET NOCOUNT OFF
END
페이징 하는 프로시저를 3개 짜보았는데 @PAGE_NO , @PAGE_SIZE 변수 선언이
가장 어려웠던 거 같은 느낌쓰,,,
- @PAGE_NO => 페이지 번호 <[1][2][3]>
- @PAGE_SIZE => 한 페이지에 보여줄 행의 수, 크기
- ((@PAGE_NO-1)*@PAGE_SIZE) => 제외할 행의 수, 크기(제외할 이전 페이지,,?)