[ROWNUM] 질문있습니다. 0 5 379

by 부산광어 [2020.05.10 16:54:58]


캡처.PNG (39,739Bytes)

Q. 테이블 EMPLOYEES의 EMPLOYEE_ID 오름차순 순으로, 5번째에서 10번째까지 조회

 

select B.*
from
(
select rownum rn, A.*
from employees A
order by A.employee_id
)B
where rn between 5 and 10;

결과에서, rownum을 제외한 나머지 값을 출력하고 싶은데

어디를 고쳐야할까요?

by 마농 [2020.05.11 07:35:31]

1. Order By > 2. Rownum > 3. 조건
이렇게 3단계로 진행해야 합니다.
1,2 단계를 하나로 합치시면 order by 보다 rownum 이 먼저 수행됩니다.

-- 3단계 - 조건
SELECT *
  FROM (-- 2단계 - Rownum
        SELECT ROWNUM rn
             , b.*
          FROM (-- 1단계 - 정렬
                SELECT *
                  FROM employees a
                 ORDER BY employee_id
                ) b
         WHERE ROWNUM <= 10    -- [중요] 꼭 필요한 조건
        ) c
 WHERE rn BETWEEN 5 AND 10
;

 


by HyunKee [2020.05.11 10:17:31]

안녕하세요 마농님 

덕분에 항상 많이 배우고 감사하게 생각하고 있습니다! 

다름이 아니라

[중요] 라고 표시하신 WHERE ROWNUM <= 10 은 데이터 처리 속도 향상을 위해 하신 건가요?

궁금해서 질문 드려봅니다 ..


by 마농 [2020.05.11 12:03:23]

네. 성능상 필요한 조건입니다.


by 마농 [2020.05.11 12:06:21]

제가 질문을 잘못 이해한 듯 하네요.
rn 항목이 출력되지 않아야 한다는 건가요?
방법은 * 대신 필요한 컬럼명 다 적어주시면 됩니다.


by 부산광어 [2020.05.11 15:51:16]

감사합니다. rn 항목을 제외하고 출력하고 싶었습니다.

모든 칼럼을 다 적어주기에 번거로워서, 더 간단한 방법이 없나 궁금했었는데,

그런 방법은 없군요! 다 수기로 작성해야 하는군요..ㅎㅎㅎ 

항상 자세한 답변 감사합니다

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