• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (328)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (14)
      • 리눅스 (5)
      • 자바 (75)
        • spring (7)
      • js (35)
      • 오라클 (39)
        • PLSQL (3)
      • cs (5)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • rownum
        2024년 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바