[MYSQL] SQL 변수처리 ( :=)

    SQL 변수처리

     

    SELECT @RNUM:= @RNUM +1 AS RNUM, T1.* FROM abc T1,  (SELECT @RNUM := 0) R;

    SQL문에서 뜬금없는 컬럼이 등장했다.

    @이다.

     

    abc Table에는 RNUM이 없다. 그러나 이는 잘못된 SQL문이 아니다.

     

    @은 변수지정을 뜻한다.

     

    @RNUM 은 RNUM이란 변수를 선언과 := 현재 RNUM의 값에 +1을 한다는 의미를 갖는다.

    그러나 이를 단독으로 사용할 경우 RNUM에 대한 초기값이 없기 때문에 값을 알 수 없NULL 이 발생한다.

     

    이에 대해 FROM 뒤에 (SELECT @RNUM := 0)이 보이는데,

    이는 RNUM의 값의 초기값 지정을 의미한다.

     

    이제 모두 해석하자면 초기값은 0이고, 행을 불러올 때마다 RNUM의 값에 +1을 더해 출력한다는 의미를 가졌다.

     

    따라서 RNUM이라고 지정한 컬럼의 대한 결과값은 이처럼 표시된다.

    이에 대한 활용법은 무궁무진하다.

    반응형

    댓글

    Designed by JB FACTORY