Mysql에서 primary key 로 보통 사용하는 auto_increment의 index값 말고,
데이터에 행 연속된 번호를 부여 하고 싶은 경우가 있을 겁니다.
이 경우에는 쿼리 문에 변수와 변수 연산을 해주면됩니다.
MYSQL에서 변수는 @변수명 으로 선언, 사용 할 수 있으며, 대입 연산자로는 := 을 쓰고 있습니다.
그러므로
SELECT * FROM table WHERE score > 80 ORDER BY score
라는 쿼리에서 연속된 행 번호를 만들고 싶다면,
SELECT 구문에
@rownum := @rownum +1 AS 컬럼명
으로 넣어 주면 됩니다. 하지만 이렇게만 하면 에러가 생깁니다. 변수가 선언(declare되지 않았기 때문이죠)
그래서 FROM 문에 추가 해주도록 합니다
FROM table, (SELECT @rownum:=0 )
SELECT 구문전에 실행되는 FROM 절에서, 서브쿼리(sub query)를 이용해서,
rownum 이라는 변수를 초기화 해주었습니다.
그래서 전체 구문은
SELECT @rownum:@rownum+1 AS 컬럼명, * FROM table, (SELECT @rownum:=0)
이런식으로 사용 가능합니다.
'컴퓨터' 카테고리의 다른 글
윈도우에서 카카오톡 2개 실행하기 (APP편) (1) | 2020.03.01 |
---|