[MySQL] ROW_NUMBER
Oracle에서 제공하는 ROW_NUMBER함수를 MySQL에서는 사용할 수 없어서 직접 구현해야 한다.
※ 번호
SELECT @rownum:=@rownum+1 AS ROW_NUMBER
FORM TABLE_NAME
,(SELECT @rownum := 0) T
- TABLE_NAME : 사용하는 테이블명
- (SELECT @rownum := 0) : rownum 초기화
- @rownum:=@rownum+1 : 증감
※ 그룹별 번호
ORACLE은 하기와 같이 가능한 기능을 구현해야 한다.
SELECT ROW_NUMBER() OVER(PARTITION BY COL_NAME1 ORDER BY COL_NAME2) AS RNUM
FROm TABLE_NAME
SELECT (CASE @vData WHEN COL_NAME1 THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) AS ROW_NUMBER,
(@vData:=COL_NAME1) AS vData
FROM TABLE_NAME
,(SELECT @vData:='', @rownum:=0) T
- (SELECT @vData:='', @rownum:=0) : 초기화
- (CASE @vData WHEN COL_NAME1 THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) 동일한 컬럼(COL_NAME!)인 경우 증가 아닌 경우 1로 초기화
- (@vData:=COL_NAME1) : 이전 컬럼(COL_NAME1) 데이터 저장
※ rownum, vData 임의에 데이터명을 쓰시면 됩니다.