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
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
라는 오류코드를 볼 수 있습니다.