MYSQL / MariaDB, ROWNUM 사용 방법 (사용자 정의 변수 @)

DB에서 데이터의 고유한 식별을 위해 시퀀스(sequence)를 사용합니다. Number 컬럼을 만들고 기본키(Primary Key)로 지정해서 1, 2, 3, 4 … 식으로 번호를 붙여서 저장하는 것입니다. 이때 각 숫자는 행에 기록된 데이터를 식별하는 고유한 값이 됩니다.

MYSQL rownum 사용 방법

오라클에서는 rownum이라는 쿼리를 이용해서 시퀀스를 사용할 수 있지만, mysql에는 그런 쿼리가 없어 사용자 정의 변수(@)를 이용해서 처리할 수 있습니다. 사용자 정의 변수는 직접 값을 설정하는 변수를 말하며 = 또는 := 부호로 정의해 사용합니다. 마리아DB도 mysql과 같은 기반이기 때문에 동일하게 적용됩니다.

 

[MYSQL 행번호 부여 예시]

SELECT (@rownum := @rownum + 1) AS Number, 
colunm 1 AS col1
colunm 2 AS col2
FROM table;

주의해야 할 것은 @rownum은 초기화하지 않으면 기본 값이 NULL이라는 점입니다. 초기화 없이 위 쿼리처럼 사용하면 Number에는 NULL 값만 들어갑니다. NULL + 1 = NULL이기 때문입니다. 그러니 SET 구문 또는 FROM 절, WHERE 절에서 초기화하는 방법을 사용합니다.

 

[SET 구문 rownum 초기화 예시]

SET @rownum := 0;

SELECT (@rownum := @rownum + 1) AS Number,
colunm 1 AS col1
colunm 2 AS col2
FROM table;

[FROM 절에서 rownum 초기화 예시]

SELECT (@rownum := @rownum + 1) AS Number,
colunm 1 AS col1
colunm 2 AS col2
FROM table,(SELECT @rownum := 0) TMP;

[WHERE 절에서 rownum 초기화 예시]

SELECT (@rownum := @rownum + 1) AS Number,
colunm 1 AS col1
colunm 2 AS col2
FROM table
WHERE (@rownum:=0)=0;

 

셋 모두 조회 결과는 같습니다.

반응형

댓글

Designed by JB FACTORY