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
[출처] MySQL에서 rownum 구현|작성자 황금쌀
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 |