Oracle에는 TOP 함수가 없다.

 

여기서 TOP 함수란?

쿼리 결과 중 출력 행 수를 제한한다.

 

SQL Server


ex1) SELECT TOP(100) AGE FROM CUSTOMER_TB;

=> 고객 테이블 데이터중 상위 100개의 라인(AGE 값만) 출력

 

ex2) SELECT TOP(100) AGE FROM CUSTOMER_TB ORDER BY AGE DESC;

=> 고객 테이블 데이터를 AGE로 내림차순 정렬 후, 상위 100개의 라인(AGE 값만) 출력

 

Oracle DB


Oracle에는 위의 TOP함수가 없기 때문에, rownum 함수를 이용해야 한다.

 

이 때 주의해야 할 점이 있다.

 

잘못된 쿼리


SELECT AGE FROM CUSTOMER_TB WHERE ROWNUM < 4 ORDER BY AGE;

=> ROWNUM < 4 문구가 먼저 실행된 후 ORDER BY AGE 함수가 적용된다.

     즉, 나이 순으로 정렬 후 상위 3개의 결과를 얻지 못한다.

 

올바른 쿼리


SELECT AGE FROM (SELECT AGE FROM CUSTOMER_TB ORDER BY AGE) WHERE ROWNUM < 4 ;

=> 이중 쿼리를 사용하여, ORDER BY AGE 를 먼저 적용한 후, ROWNUM < 4 을 적용해야 한다.

 

-끝-

+ Recent posts