문제
행이 2건인 테이블에서 결과가 다른 SQL은?
① SELECT * FROM T WHERE ROWNUM <= 1 ② SELECT * FROM T WHERE ROWNUM < 2 ③ SELECT * FROM T WHERE ROWNUM = 1 ④ SELECT * FROM T WHERE ROWNUM = 2
정답
4번
해설
정답: 4. Oracle에서 ROWNUM은 반환되는 첫 행부터 1이 부여되므로 ROWNUM = 2 조건은 첫 행이 통과하지 못해 결과가 나오지 않는다.
오답 풀이
- 1번: 첫 번째 행 1건이 반환된다.
- 2번: ROWNUM < 2는 첫 번째 행 1건이 반환된다.
- 3번: ROWNUM = 1은 첫 번째 행 1건이 반환된다.
- 4번: ROWNUM = 2는 일반적으로 0건이 된다.
보충 개념 ROWNUM은 WHERE 조건을 통과하며 반환되는 순서대로 부여된다. N번째 이후 행을 구하려면 인라인 뷰에서 ROWNUM을 먼저 부여한 뒤 바깥 쿼리에서 필터링해야 한다.