MYSQL / MariaDB, ROWNUM 사용 방법 (사용자 정의 변수 @)
- Database
- 2022. 8. 7.
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;
셋 모두 조회 결과는 같습니다.
반응형
'Database' 카테고리의 다른 글
MYSQL, character set 변경 방법 (데이터베이스, 테이블) (0) | 2022.08.14 |
---|---|
MYSQL, FOREIGN_KEY_CHECKS 사용 방법, 주의사항 (0) | 2022.08.13 |
SQL, DISTINCT 여러 컬럼 사용하는 경우 조회 결과 (0) | 2022.05.04 |
MYSQL, grant all privileges 뜻과 주의사항 (0) | 2022.04.28 |
MYSQL, AS와 CASE WHEN 구문 사용법 (0) | 2022.04.27 |