SELECT * FROM( SELECT BANNER_NM, LINK_URL, BANNER_DC, TARGET, (SELECT NF.FILE_PATH || NF.FILE_NAME FROM FILE NF WHERE NF.FILE_KEY = BN.FILE_KEY and ROWNUM =1 ) IMG_SRC FROM BANNER BN WHERE 1 = 1 AND NO = '2' AND REFLCT_AT = 'Y' ORDER BY FRST_REGIST_PNTTM DESC ) WHERE ROWNUM <= 10
안녕하세요.
쿼리실행시 서브쿼리부분이 에러가나서 ROWNUM = 1을 추가하였습니다.
추가 후 서브쿼리에 ORDER BY NF.FILE_ID DESC 절을 추가하면 문법에러가 납니다.
ORDER BY절을 어디쪽에 써야하는지 답변좀 부탁드립니다.
1. 스칼라 서브쿼리에 ORDER BY 절을 넣을 수 없습니다.
- 정렬된 것중 1건을 가져오려면?
- KEEP 을 이용하세요.
2. 스칼라서브쿼리의 실행 위치를 바꾸세요.
- 서브쿼리 수행 횟수 감소로 성능이 개선됩니다.
- 전체건수 ==> 1 페이지(10건)
SELECT banner_nm , link_url , banner_dc , target , (SELECT MAX(nf.file_path || nf.file_name) KEEP(DENSE_RANK FIRST ORDER BY nf.file_id DESC) FROM file nf WHERE nf.file_key = bn.file_key ) img_src FROM (SELECT banner_nm , link_url , banner_dc , target , file_key FROM banner bn WHERE 1 = 1 AND no = '2' AND reflct_at = 'Y' ORDER BY frst_regist_pnttm DESC ) bn WHERE ROWNUM <= 10 ;