문제
다음 SQL 실행 후 결과는? (Oracle)
[TEST] ID: 1,2,3,4,5 / VAL: A,B,C,D,E
SQLDELETE FROM TEST WHERE ID IN (SELECT ID FROM TEST WHERE ROWNUM <= 2 ORDER BY ID DESC); SELECT COUNT(*) FROM TEST;
① 3 ② 4 ③ 5 ④ 오류
정답
1번
해설
서브쿼리에서 ROWNUM <= 2는 ORDER BY보다 먼저 처리되어 처음 2건(ID=1,2)을 선택합니다. 따라서 ID가 1,2인 행이 삭제되고 3,4,5가 남아 COUNT(*)=3입니다. ②4: 틀림, 2건이 삭제됨. ③5: 틀림, 삭제가 실행됨. ④오류: 틀림, 문법적으로 올바름.