본문 바로가기
DB 지식/mssql지식

mssql 에서 mysql 에서의 Limit 처럼 사용하는 방법

by 몽일! 2024. 1. 3.

방안 1.
select top 10 * from tblname
TOP 을 이용한  Limit 갯수만큼 뽑기

 

 

PK 값과 TOP 을 이용하여 페이징도 가능

 

if (empty($pageno)) $pageno=1;

 

select top $PageSize $query_list_field 
  from (select $list_field
from $Tbl where $_whereqry
) tb
 where $pk_field not in (select top (($PageNo-1)*$PageSize) $pk_field from $Tbl a where $_whereqry)

 

$PageSize = 페이지당 게시글갯수

$query_list_field , list_field=페이지에 표시될컬럼

$Tbl =테이블 

$_whereqry=조건식

$pk_field =pk컬럼

$PageNo=페이지넘버 



방안 2.
select * from (
    select row_number() over (order by key) as rownum, * from tblname
) tbl1
where tbl1.rownum between 101 and 110;

요거는 Window Function 을 이용하여 Rownum 을 매기고 그 Rownum 을 이용하여 검색하는 방법

방안 3.
select * from tblname
order by key
OFFSET 100 ROWS
FETCH NEXT 10 ROWS ONLY

mssql 2012 버전부터는 OFFSET, FETCH 구문을 이용하여 사용가능 
다만 order by 절과 같이 사용되어야함!!