[MySQL] ROWNUM(번호) 및 페이징(Paging) 처리

    MySQL은 오라클에서 제공하는 여러가지 기능들이 없기 때문에 변수를 선언하는 방식처럼 작업을 수행해야 한다. rownum 같은 경우는 변수를 설정한 후, 카운트가 증가할 때마다, 변수에 +1을 증가시켜서 출력하는 식의 편법이 존재한다.


    번호(ROWNUM) 생성 방법


    1
    2
    3
    4
    5
    SELECT
      @rownum:=@rownum+as no, 
      dic.*
    FROM dic_wrd_cls_tmp dic
    WHERE (@rownum:=0)=0
    cs


    WHERE 조건에 rownum을 초기화하여 사용하는 방법


    1
    2
    3
    4
    5
    SET @rownum:=0;
    SELECT
      @rownum:=@rownum+as no, 
      dic.*
    FROM dic_wrd_cls_tmp dic;
    cs

    SET으로 rownum 변수를 초기화하여 사용하는 방법



    페이징(Paging) 처리


    상대적으로 귀찮은 rownum에 비해서 페이징은 매우 심플하다. 바로 limit이라는 것을 걸어주면 되는데 limit을 값을 하나만 넣으면, 출력할 개수가 지정되고 값을 2개 넣을 경우 첫번째는 offset 값, 두번째는 출력할 개수가 지정이 된다.


    즉, limit 10, 10이라고 지정할 경우, offset이 10이고, 해당 offset부터 10개를 출력해라가 된다. 작성자의 로컬 DB에 있는 내용을 토대로 결과를 확인해보면


    1
    2
    3
    4
    5
    6
    7
    SET @rownum:=0;
    SELECT
      @rownum:=@rownum+as no, 
      dic.wrd,
      dic.wrd_cls
    FROM dic_wrd_cls_tmp dic
    limit 20;
    cs


    위와 같은 쿼리 실행



    1 사회생활     복합명사

    2 생활신조     복합명사

    3 빅데이터     복합명사

    4 스크립트언어  복합명사

    5 sns사이트    복합명사

    6 독거노인     복합명사

    7 봉사활동     복합명사

    8 결손가정     복합명사

    9 학습지도     복합명사

    10 소방대원     복합명사

    11 교육혜택     복합명사

    12 자기소개     복합명사

    13 가정환경     복합명사

    14 경제위기     복합명사

    15 데이터분석    복합명사

    16 표준소스     복합명사

    17 유년시절     복합명사

    18 8비트     복합명사

    19 pc방     복합명사

    20 신체활동     복합명사


    결과가 20개가 나왔다는 것을 볼 수 있다. 화면에 10개씩 출력하는 paging 처리를 해본다고 가정해보자. 그럴 경우 우리는 11번부터 20번까지 출력을 해야 하는데 offset을 10으로 지정을 하고(0부터 시작) 20개를 10으로 변경한다. 번호도 11번부터 20번까지 나오는 것을 원할 경우, 초기화를 0이 아니라 10으로 변경하면 된다.


    1
    2
    3
    4
    5
    6
    7
    SET @rownum:=10;
    SELECT
      @rownum:=@rownum+as no, 
      dic.wrd,
      dic.wrd_cls
    FROM dic_wrd_cls_tmp dic
    limit 1010;
    cs


    11 교육혜택     복합명사

    12 자기소개     복합명사

    13 가정환경     복합명사

    14 경제위기     복합명사

    15 데이터분석    복합명사

    16 표준소스     복합명사

    17 유년시절     복합명사

    18 8비트     복합명사

    19 pc방     복합명사

    20 신체활동     복합명사


    정상적으로 rownum 번호와 페이징이 처리가 된 것을 확이할 수 있다. limit 10, 10에서 앞의 offset을 설정하는 공식팁을 주자면, 로우 출력 사이즈가 10이기 때문에, offset은 0, 10, 20, 30이런식으로 가게 되는데 공식을 아래처럼 설정하여 offset 번호를 설정하면 된다.


    (페이지번호 - 1) * 로우 출력 사이즈

    댓글

    Designed by JB FACTORY