본문 바로가기

Databases/SQL Server

sql server 에서 특정 순위의 값만 추출 (limit N, N)

SQL server 에서 result set를 추출 한다음 순위를 매겨 특정 부분만 별도로 추출 하고자고 한다.

(예를 들면 100위부터 200위 까지의 목록 추출)


mysql 에서는 limit N, N 과 같은 구문으로 간단하게 추출이 가능 하지만 sql server 에서는 limit와 비슷한 기능을 하는 top 구문으로는 top N, N과 같은 형태로 사용 할 수 없다. 


그래서 아래와 같이 row_number() 함수를 사용하여 row 컬럼을 추가 하여 순위를 나열 한 후 

그 순위에 대한 범위를 지정 하는 방법을 이용하면 동일한 효과를 얻을 수 있다.


-- <column_name> 을 order by 하여 100 ~ 200 까지의 순번 데이터 추출

select * 

from (

select *, row_number() over (order by <column_name>) as row from <table_name>

) tbl_1

where tbl_1.row >= 100 and tbl_1.row <= 200


반대로 mysql 에서 어떤 result set에 번호를 부여 하고 싶다면 아래와 같이 하면 된다.


set @row:=0

;

select

*,

@row:=@row+1 as row_number

from <table_name>

group by <column_name>

order by <column_name> 

;



'Databases > SQL Server' 카테고리의 다른 글

BCP를 이용한 데이터 추출  (0) 2012.09.12
MSSQL 파일 생성 하기 (4단계)  (0) 2012.08.07
identity값 초기화  (0) 2012.07.24
MSSQL 용량 부족 시 용량 확보 방법  (0) 2012.02.20