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 을 적용해야 한다.
-끝-
'IT | 개발 > Database' 카테고리의 다른 글
[Oracle | 오류 해결] error code [17034] 해당 위치에 지원되지 않는 SQL92 토큰 (2) | 2020.11.27 |
---|---|
[Database] SQL Developer 쿼리 정렬 단축키 (0) | 2020.09.08 |
[Oracle] 작은 따옴표 ' 가 포함된 Column 검색하기(like 사용) (0) | 2020.05.19 |
[오류 해결] ### Error querying database. Cause: java.sql.SQLDataException: ORA-01861: literal does not match format string (3) | 2020.04.01 |
[Oracle] Jboss 에서 Oracle DB 서버 설정 파일 위치 (0) | 2020.02.14 |