728x90

MYSQL에는 ROWNUM 없음

페이징이나 기타 의 경우 limit로 사용가능 하나 현재의 row가 검색된 rows중에 몇번째 인지 알 필요가 있을경우

mysql에서 oracle에서 쓰던 rownum 같은것을 구현할 수는 없을까?

oracle의 rownum과 비슷한 기능을 mysql의 내부 변수로 처리 하면 가능하다.

경우 1.

mysql> SET @n := 0;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @n := @n+1 AS rownum, thing, arms, legs FROM limbs;
+--------+--------------+------+------+
| rownum | thing        | arms | legs |
+--------+--------------+------+------+
|      1 | human        |    2 |    2 |
|      2 | insect       |    0 |    6 |
|      3 | squid        |   10 |    0 |
|      4 | octopus      |    8 |    0 |
|      5 | fish         |    0 |    0 |
|      6 | centipede    |    0 |  100 |
|      7 | table        |    0 |    4 |
|      8 | armchair     |    2 |    4 |
|      9 | phonograph   |    1 |    0 |
|     10 | tripod       |    0 |    3 |
|     11 | Peg Leg Pete |    2 |    1 |
|     12 | space alien  | NULL | NULL |
+--------+--------------+------+------+

12 rows in set (0.00 sec)


위와 같은 경우 변수를 셋팅하였는등 문제가 있었으나 아래와 같이 하면 한번의 쿼리로 처리가 가능 하다.

경우 2.

SELECT @RNUM:=@RNUM+1 AS ROWNUM FROM (SELECT @RNUM:=0) R

SELECT @RNUM:=@RNUM+1 AS ROWNUM , A.* FROM (SELECT @RNUM:=0) R, 테이블_이름 A

728x90

'DB' 카테고리의 다른 글

Mysql 숫자함수, 날짜함수, 기타함수, 논리함수  (0) 2012.07.29
Mysql 문자 함수  (0) 2012.07.29
클러스터 인덱스 & Non클러스터 인덱스  (0) 2012.07.29
데이터베이스 용어  (0) 2012.07.29
MYSQL INDEX  (0) 2012.07.29

+ Recent posts