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 |