[MySQL] row number 행 번호 매기기

hukim·2020년 12월 5일
2

MySQL

목록 보기
4/4

번호 매기기

SELECT 
       log.id, 
       log.created_at,
       s.account AS modifier
FROM 
       seller_logs AS log
INNER JOIN
       sellers AS s 
       ON log.modifier_id = seller.id
WHERE 
       log.seller_id = 1
ORDER BY
       id DESC

다음과 같은 테이블을 SELECT 했을때 그 결과를 가져와서 각 행에 번호를 매겨도 되지만
mysql 자체에서 번호를 붙여서 나오게끔 하고 싶을 때 사용할 수 있는 방법입니다.

SELECT문 안에서 변수선언하기

SELECT @변수이름 := 대입값;

먼저 SELECT문 안에 변수를 만들어서 사용할 것이기 때문에 위의 방식을 이용했습니다.

row number 매기기

SELECT 
       log.id, 
       log.created_at,
       s.account AS modifier,
       @rownum := @rownum + 1 AS no
FROM 
       seller_logs AS log
       (SELECT @rownum :=0) AS r
INNER JOIN
       sellers AS s 
       ON log.modifier_id = seller.id
WHERE 
       log.seller_id = 1
ORDER BY
       id DESC

@rownum 이라는 변수를 사용을 하고 밑에
(SELECT @rownum :=0) AS r 부분은 @rownum을 0으로 초기화한다음 SELECT 하겠다는 뜻입니다.
그리고 @rownum := @rownum + 1 AS no은 행을 불러올때마다 변수에 1을 더해서 출력하겠다는 뜻입니다.

참고사항

FROM절에 (SELECT @rownum :=0)처럼 파생되는 테이블은 항상 AS 별칭을 지정해줘야합니다.

그렇지 않을 경우
Error Code : 1248. Every derived table must have its own alias
라는 오류코드를 볼 수 있습니다.

0개의 댓글