인라인뷰에서 order by 사용안되는 경우에 대해 질문드립니다 0 5 3,190

by 될때까지 [Oracle 기초] [2013.08.13 17:24:36]



select 절에 하나의 order by만 올 수 있기 때문에 일반적인 경우엔 서브쿼리에서 order by절이 사용이 불가능하지만 from절에 오는 서브쿼리인 인라인뷰는 하나의 테이블로써 사용되기 때문에 order by가 사용이 된다고 알고 있습니다

그런데 인라인뷰에서 order by가 사용이 안되는 경우가 있다고 하는데, 제 검색능력이 부족해서 그런건지 아무리 찾아봐도 어느 경우에 사용이 불가능한건지 알 수가 없네요...
도움 좀 부탁드립니다
by 마농 [2013.08.13 17:45:34]
IN 절의 서브쿼리, SELECT 절의 서브쿼리등에서는 ORDER BY 안되구요
FROM 절의 서브쿼리에서만 허용이 되는데.
이 또한 오라클에서만 허용이 되는 것이구요.
타 DBMS 의 경우엔 허용이 안되는걸로 압니다.
MSSQL 의 경우 Top 구문과 함께 사용시에만 허용이 되구요.

by 될때까지 [2013.08.13 17:47:47]

오라클 인라인뷰에서 order by가 사용이 안되는 경우는 없는건가요?


by 될때까지 [2013.08.13 17:55:25]

아참 그리고 이번건과 무관하게 궁금한 부분인데 sql에서 top구문과 함께 order by를 사용하면 사용이 가능해지는 이유가 뭘까요?
궁금해서 계속 검색해봤는데 왜? top구문을 사용하면 order by가 사용가능해지는가 에 대한 내용은 찾을 수가 없네요...


by 마농 [2013.08.13 18:15:44]
일종의 규칙입니다. 그냥 정한거죠.
사용자는 규칙에 따를 뿐이죠. 특별한 이유가 없죠.
규칙을 정한 이유는 있을 수 있겟죠.
그 이유는 추측만 가능하죠.. 규칙을 정한 사람이 아닌 이상...
추측해보면 중간 결과에 대한 정렬이 필요 없기 때문이랄까? 설득력은 없죠.
top 구문은 정렬을 수반하기 때문에 예외적으로 허용하지 않았을까?
오라클에서는 FROM절의 서브쿼리에서는 정렬이 필요하다 판단해서 허용했을 듯..
아니면 오라클에서는 TOP n 쿼리를 지원하지 않으니...
이를 구현하기 위해선 인라인뷰 정렬이 필요하기 때문에 허용했을 수도...
번외로... 12C 버전에서는 Top n 이 지원된다더군요.

by 될때까지 [2013.08.14 08:16:54]

그렇군요 감사합니다 오늘도 좋은 가르침 감사히 배워가겠습니다 좋은하루 되세요~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입