- rownum2024년 07월 12일
- chantleman
- 작성자
- 2024.07.12.:34
rownum
: 특정개수의 행만 조회
: 행번호 매기기
- emp 테이블의 모든 컬럼 나타내기
select rownum, emp.* from emp;
- order by 추가
select rownum, emp.* from emp order by job;
select 후에 order by가 이루어지기 때문에 순서가 안맞다는 걸 확인할 수 있음
행번호 순서를 유지하기 위해서는 서브쿼리 사용해서 해결
select rownum, X.* from (select A.* from emp A order by A.name) X;
- cart table에서 주문수량이 큰 것부터 순서를 매겨 주문번호, 주문수량을 조회
select rownum, x.cart_no, x.cart_qty from (select * from cart order by cart_qty desc) x;
where절이 실행될 때 조건이 맞으면 1을 부여하고, 맞지 않으면 번호를 부여하지 않고 버리는 방식
조건이 rownum=1일 경우where조건 후 첫번째 행에서 rownum=1을 만족해서 한 개를 가져오나
rownum=2일 경우
where 조건 결과의 첫번째 행의 순번이 2가 아니고 1이라 결과 버림
내가 원하는 행 개수만큼 뽑고 순번을 매길 수 있으나 중간 순번의 행은 꼭 선택하여 조회할 수 없음
rownum은 반드시 1부터 나와야하기 때문에 where 조건에서 <=10과 같은 조건은 사용 가능하지만,
between 6 and 10이나 =5, >=3과 같이 1 외의 숫자부터 나오는 것은 불가능.
따라서 특정 행을 추출할 때 rownum이 포함된 select문 바깥에 한 번 더 select를 감싸줌
select rownum, emp.* from emp where rownum between 6 and 10;
이렇게 하면 안나오지만
select * from(select rownum rn, emp.* from emp) where rn between 6 and 10;
이렇게 select문으로 한 번 더 감싸면 결과가 나옴
select * from (select rownum, emp.* from emp) where rownum between 6 and 10;
하지만 rownum에 aliasing을 하지 않으면 결과가 나오지 않음
728x90'오라클' 카테고리의 다른 글
데이터 자동 생성 (0) 2024.07.19 테이블 join (0) 2024.07.15 오라클 REGEXP 함수 (0) 2024.07.12 오라클 조건문 (0) 2024.07.12 오라클 NULL, NVL, NULLIF, COALESCE (0) 2024.07.12 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)