웹사이트에서 페이징 처리를 할때 top 을 사용하고 있습니다.
SELECT TOP 5 * FROM STORY
WHERE num NOT IN (SELECT TOP " & j & " [num] FROM STORY order by Udate desc ) Order by Udate desc
이런 식으로 top 을 뽑은 다음 페이징 처리 된 부분을 제외를 하고... top 5 이런식으로 뽑아왔었는데요.
목록을 불러오는 부분이 union 으로 여러 테이블의 데이터를 가지고 처리를 하게 되어
위 처럼 사용을 하지 못하게 되었습니다.
Select 문을 top 10 번째 부터 10개를 뽑아오기... 그렇게 할 수는 없을까요?
row_number 로 처리하시면 될듯한데요?
참고만 하세요.
1) 최종 Select 값을 토대로 각 row 별로 row_number 부여
2) 1)의 Select 값을 내부 서브쿼리로 처리하고, Where 조건에서 row_number 값을 토대로 Select
* row_number 컬럼을 rn 이라고 가정
예시)
Select a.*
From (
Select
row_number() over (Order by Udate desc) As rn
,a.*
From
(
원데이터 Select Union 외
) a
) a
Where a.rn Between 11 And 20