oracle in 서브쿼리 불가order by 솔루션

2666 단어 필기
        oracle  in      order by      

오늘 아주 재미있는 문제를 발견했어요.데이터베이스를 조회할 때 내가 쓴 문장에 문제가 없다는 것을 확인하고 동료를 몇 번 찾아봤다.자료를 찾아보니 ORDER BY가 하위 조회를 할 수 없었습니다.구체적인 것은 다음과 같다. 상급자의 요구를 받으면 최근 200개의 데이터에 대응하는 이름을 찾아야 한다. 처음에 수요를 받으면 이 이름은 매우 간단하다. 직접 200개를 정렬한 다음에 IN에서 끝난다.
SELECT  ID,NAME  FROM TBL_A WHERE  ID  IN (
    SELECT ID FROM (
           SELECT ID FROM TBL_B ORDER BY  CREATE_DATE DESC
    ) WHERE ROWNUM<=200 ORDER BY ROWNUM ASC  
)

그런데 일이 일어났어요. 위에서 말한 이 문장이 죽어도 알아낼 수가 없어요...문장을 잘못 쓴 줄 알았다.이런 자료를 조사한 결과, ORDER BY는 하위 조회를 할 필요가 없었는데, 후에 바로 고쳤다
SELECT  ID,NAME  FROM TBL_A WHERE  ID  IN (
  SELECT ID FROM (
    SELECT ID FROM (
           SELECT ID FROM TBL_B ORDER BY  CREATE_DATE DESC
    ) WHERE ROWNUM<=200 ORDER BY ROWNUM ASC  
   ) 
)

이 작법은 좀 구리지만, 드디어 실현되었다. 모두들 코드에 절대 넣지 마라. 나는 이것은oracle 편집기에서 얻은 데이터일 뿐이다.더 좋은 의견이 있으신지 모르겠습니다.

좋은 웹페이지 즐겨찾기