2024-01-05 22:16:34

조회 개수에 limit을 걸 때 사용하는 SQL 문법 중에 LIMIT이 있습니다. 예를 들어, MySQL에서 특정 테이블에서 10건의 데이터만 조회하고 싶다면 다음과 같이 SQL 쿼리문을 작성할 수 있습니다. 

 

SELECT * FROM table LIMIT 10;

 

그런데 LIMIT는 Oracle에서는 사용할 수 없습니다. 대신 다음과 같이 쿼리를 작성해야 합니다. 

 

SELECT * FROM table WHERE ROWNUM <= 10;

 

ROWNUM라는 예약어를 사용하면 됩니다.

 

그런데 WHERE 절에서 관리를 하기 때문에 ORDER BY로 특정 컬럼을 기준으로 정렬을 한 것에서 10개의 컬럼만 가지고 와야 하는 상황이라면 ORDER BY로 조회한 결과에 대해 ROWNUM로 필터링을 걸어줘야 합니다. 

 

SELECT * FROM (SELECT * FROM table ORDER BY column1) WHERE ROWNUM <= 10;

 

참고자료

[1] https://stackoverflow.com/questions/595123/is-there-an-ansi-sql-alternative-to-the-mysql-limit-keyword

[2] https://gent.tistory.com/254