MSSQL 페이징
요즘 진행하는 일 관련해서 페이징을 MySQL 처럼 쉽게 할 수 없을까 하는 생각이 들더군요. 그러다가 요런 방법이 떠올랐는데....
SELECT
TOP [record per page]
*
FROM
(
SELECT
ROW_NUMBER() OVER(order by [target_key] [direction]) - ([record per page] * [current page]) AS CNT,
*
FROM
[target table]
WHERE
0 = 0
[conditions]
) AS temp
WHERE
CNT > 0
;
위와 같은 형태가 떠오르더군요. 동작도 잘 하고. 얼추 MySQL의 limit, offset 같은거죠.
붉은색 부분은 무조건 필요합니다. 파란색 부분은 실질적으로 조회할 정보에 대한 쿼리문 입니다. 그리고 굵은 글씨가 limit, offset 역할을 합니다. 마지막으로 [이텔릭] 은 개발자가 별도의 변수를 할당하거나 상황에 맞게 직접 입력하는 부분입니다.
전문적으로 하시는 분은 또 다른 방법도 쓰시겠지만, 이거 이전에는 좀 복잡하게 해서 말이죠;;
WHERE
CNT BETWEEN (페이지당레코드수 * 페이지) AND ((페이지당레코드수 * 페이지) + 페이지당레코드수)
뭐... 이런식으로 말이죠 -_-;;;
SELECT
TOP [record per page]
*
FROM
(
SELECT
ROW_NUMBER() OVER(order by [target_key] [direction]) - ([record per page] * [current page]) AS CNT,
*
FROM
[target table]
WHERE
0 = 0
[conditions]
) AS temp
WHERE
CNT > 0
;
위와 같은 형태가 떠오르더군요. 동작도 잘 하고. 얼추 MySQL의 limit, offset 같은거죠.
붉은색 부분은 무조건 필요합니다. 파란색 부분은 실질적으로 조회할 정보에 대한 쿼리문 입니다. 그리고 굵은 글씨가 limit, offset 역할을 합니다. 마지막으로 [이텔릭] 은 개발자가 별도의 변수를 할당하거나 상황에 맞게 직접 입력하는 부분입니다.
전문적으로 하시는 분은 또 다른 방법도 쓰시겠지만, 이거 이전에는 좀 복잡하게 해서 말이죠;;
WHERE
CNT BETWEEN (페이지당레코드수 * 페이지) AND ((페이지당레코드수 * 페이지) + 페이지당레코드수)
뭐... 이런식으로 말이죠 -_-;;;
우연히 서핑을하다 익숙한 얼굴이 보이네요
답글삭제