MSSQL Limit 기능 구현하기

이기현·2020년 12월 24일

MSSQL

목록 보기
1/7

MSSQL에는 limit 함수가 따로 제공되지 않는다.

따라서 ROW_NUMBER함수를 통해 각각의 row넘버를 만들어 주고 해당 row의 값을 통해 limit기능을 구현할 수 있다.

방법 1. WITH절 사용

		WITH paging AS
		(
		select ur.DisplayName as Name, REPLACE(ur.ExGroupName, ';','') as Department, 
			REPLACE(ur.ExJobPositionName, ';','') as Position, 
			REPLACE(ur.ExJobTitleName, ';','') as Duty, ur.EX_PrimaryMail as Email,
			ROW_NUMBER() OVER (ORDER BY ur.DisplayName) AS 'RowNumber'
		from dbo.Base_OBJECT_UR as ur
		)
		SELECT * 
		FROM paging 
		WHERE RowNumber BETWEEN 1 AND 10;	

하지만 WITH절을 사용하는 것은 좋은 습관이 아니다
여러 WITH절을 사용하게 되면 DeadLock등에 걸릴 위험이 있다.

방법 2. WITH절 사용하지 않기

		select tmp.DisplayName as Name, REPLACE(tmp.ExGroupName, ';','') as Department, 
			REPLACE(tmp.ExJobPositionName, ';','') as Position, 
			REPLACE(tmp.ExJobTitleName, ';','') as Duty, tmp.EX_PrimaryMail as Email
		from( 
			select ROW_NUMBER() OVER (ORDER BY ur.DisplayName) AS 'RowNumber', * 
			from dbo.Base_OBJECT_UR as ur
			) as tmp 
		WHERE RowNumber BETWEEN 1 AND 10;
profile
실력을 쌓아가는 하루하루

0개의 댓글