반응형

MYSQL 작업시 테이블에는 없는 순번을 매기는 방법입니다.


  

1
2
3
4
5
6
7
8
9
10
/*변수 선언을 위에 해주는 방식*/
SET @rownum:=0;
 
SELECT
    @rownum:=@rownum + 1 as rNum,
    t1.*
FROM
    TABLE_NAME t1
;
 
cs

혹은

1
2
3
4
5
6
7
8
9
/*변수 선언을 내부에 해주는 방식*/
SELECT
    @rownum:=@rownum + 1 as rNum,
    t1.*
FROM
    TABLE_NAME t1,
    (SELECT @rownum:=0) t2
;
 
cs

그냥 아무런 조건 없이 순번을 주실 때는 이렇게 해주시면 됩니다.







만약 그룹별로 순번을 다르게 매기고 싶으시다면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* 변수 선언을 위에 해주는 방식*/
/* 만약 조건이 문자열이라면 */ /* 만약 조건이 숫자라면 */
    /* SET @val:=''; */         /* SET @val:=0;  */
/* 위에것 둘 중 하나만 써주시면 됩니다. */
/* 만약 그룹지을 조건이 VAL1 이라면 */
 
SET @rownum:=0;
 
SELECT MAIN.*
FROM (
    SELECT 
    (CASE @val WHEN t1.VAL1 THEN @rownum:=@rownum+1 
    ELSE @rownum:=1 END) as rNum,
    (@val:=t1.VAL1) temp,
    t1.*
   FROM TABLE_NAME t1 
   ORDER BY t1.VAL                  
) MAIN;
 
cs

이렇게 해주시거나

혹은


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 변수 선언을 내부에 해주는 방식*/
/* 만약 그룹지을 조건이 VAL1 이라면 */
 
SELECT MAIN.*
FROM (
    SELECT 
    (CASE @val WHEN t1.VAL1 THEN @rownum:=@rownum+1 
    ELSE @rownum:=1 END) as rNum,
    (@val:=t1.VAL1) temp,
    t1.*
   FROM TABLE_NAME t1,
        (SELECT @val:='', @rownum:=0) SUB
   ORDER BY t1.VAL                  
) MAIN;
 
cs



이렇게 순번을 매기시면 됩니다.

반응형

+ Recent posts