case Computer :

[MySQL] oracle에 rownum() 기능을 MySQL 에서 사용하기(LIMIT)

거곰 2009. 7. 11. 10:10
오라클에는 rownum() 이라는 편리한 기능이 있다.

ROWNUM은 오라클 데이터베이스가 제공하는 마술과도 같은 컬럼입니다. 이 때문에 많은 사용자들이 문제를 겪기도 합니다. 하지만 그 원리와 활용 방법을 이해한다면 매우 유용하게 사용할 수 있습니다. 필자는 주로 두 가지 목적으로 ROWNUM을 사용합니다.

  • Top-N 프로세싱: 이 기능은 다른 일부 데이터베이스가 제공하는 LIMIT 구문과 유사합니다.
  • 쿼리 내에서의 페이지네이션(pagination) – 특히 웹과 같은 "stateless" 환경에서 자주 활용됩니다. 필자는 asktom.oracle.com 웹 사이트에서도 이 테크닉을 사용하고 있습니다. 

ROWNUM은 쿼리 내에서 사용 가능한 (실제 컬럼이 아닌) 가상 컬럼(pseudocolumn)입니다. ROWNUM에는 숫자 1, 2, 3, 4, ... N의 값이 할당됩니다. 여기서 N 은 ROWNUM과 함께 사용하는 로우의 수를 의미합니다.




MySQL에도 비슷하게 사용할수 있는 구분이 있다.
바로 limit이다.

사용법

mysql > desc user;
|Field  |  Type           |
|num   |  int(11)         |
|name |  varchar(20)  |

mysql select * from user order by num;
| 1   |   kim |
| 2   |   park |
| 3   |   lee |
| 4   |   choi |
| 5   |   sin |
| 6   |   tim |

mysql>select * from user order by num limit 0, 2;
| 1   |   kim |
| 2   |   park |

mysql>select * from user order by num limit 0, 4;
| 1   |   kim |
| 2   |   park |
| 3   |   lee |
| 4   |   choi |

mysql>select * from user order by num limit 3, 2;
| 3   |   lee |
| 4   |   choi |


위에 예를 보면 대충 감이 올것이다.

limit a, b
해석하면 a번째 부터 b개를 가져온다




반응형