공통 원리 정렬은 같고
제한 꼬리만 다름
예시 질문: 가격이 높은 상품 10개를 가져온다 ORDER BY 먼저
SELECT *
FROM products
ORDER BY price DESC
-- 여기 뒤의 제한 구문이 DBMS마다 달라진다
상위 N 조회의 기준점

정렬 없이 제한만 걸면 어떤 행이 선택될지 불명확합니다.

구분
대표 환경
붙는 구문과 읽는 포인트
표준형 이식성 우선
Oracle 12c+, PostgreSQL

SQL 표준에 가장 가까운 방식

FETCH FIRST 10 ROWS ONLY
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY

새 환경에서 문법 일관성을 가져가려면 가장 무난합니다.

LIMIT형 짧고 익숙함
MySQL, PostgreSQL

실무에서 가장 자주 보이는 축약형

LIMIT 10
LIMIT 10 OFFSET 10

짧아서 읽기 쉽지만, 문법 자체는 SQL 표준형이 아닙니다.

SQL Server 전용 문법 병행
SQL Server

TOPOFFSET FETCH를 함께 기억

TOP 10
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY

TOP은 단순 상위 N, 페이지네이션은 OFFSET FETCH가 자연스럽습니다.

Oracle 11g 예외 패턴
Oracle 11g

ROWNUM이 먼저 붙어서 서브쿼리가 필요

SELECT * FROM (
  SELECT * FROM products ORDER BY price DESC
) WHERE ROWNUM <= 10

정렬 후 상위 N을 얻으려면 한 번 감싸서 순서를 바로잡아야 합니다.

실무에서 기억할 한 줄: 같은 TOP-N 의도라도 붙는 제한 구문이 엔진마다 다르며, 그중 Oracle 11g만 예외적으로 정렬과 제한의 순서를 별도로 처리해야 합니다.