마케팅스프린트
[ GitHub ]

[ jungyijun@naver.com ]


  • Category
    • 마케팅 자동화
    • old posting
      • ChatGPT
      • Java
      • MySQL
      • JSP
      • Spring Framework
      • Node.js
Total
Today
Yesterday
hELLO · Designed By 정상우.
old posting/MySQL

[SQL] ROWNUM, ROW_NUMBER(), RANK()

2021. 6. 1. 15:48
  • ROWNUM
    • Oracle에서 붙여주는 행번호 객체
      • DBMS 마다 구현방법이 다르다.
        • MySQL : LIMIT
        • MS SQL server : TOP
        • Oracle : ROWNUM
    • 사용법
      • SELECT ROWNUM, no, name FROM test ORDER BY no DESC;
      • SELECT ROWNUM no, name FROM test WHERE ROWNUM <= 5 ORDER BY no DESC;
      • SELECT no, name FROM test WHERE ROWNUM <= 5 ORDER BY no DESC;
      • SELECT ROWNUM, no, name FROM test ORDER BY no DESC;
        • ROWNUM은 SELECT 이후에 붙여지는 객체이기 때문에 이후에 ORDER BY를 하면 순서가 망가질 수 있다.
      • SELECT ROWNUM, no, name FROM test WHERE ROWNUM > 5 ORDER BY no DESC;
        • ROWNUM 범위가 1부터 명시되지 않으면 결과가 나오지 않는다.
        • SELECT ROWNUM, no, name FROM ROWNUM >= 1 AND ROWNUM < 1 + 5 ORDER BY no DESC;
      • SELECT * FROM ( SELECT ROWNUM AS RNUM, T.* FROM (SELECT no, name FROM test ORDER BY no DESC) T) WHERE RNUM >= 6 AND RNUM < 6 + 5;
        • ROWNUM의 사본을 만들어 값으로 가져와 1이 명시되지 않아도 결과를 출력시킬 수 있다.

 

  • ROW_NUMBER() OVER (ORDER BY 정렬컬럼1, ...)
    • 특정 컬럼의 값을 기준으로 정렬한 뒤 순서를 부여한다.
      • ROW_NUMBER() OVER (ORDER BY 정렬컬럼1, ...) SubQuery Column FROM SubQuery;
    • 사용법
      • SELECT ROW_NUMBER() OVER (ORDER BY no DESC) AS RNUM, T.* FROM (SELECT no, name FROM (SELECT no, name FROM test ORDER BY no DESC) T;

 

  • RANK() OVER (ORDER BY 정렬컬럼1, ...)
    • 특절 컬럼의 값을 기준으로 정렬한 뒤 순위를 부여한다.
      • RANK() OVER (ORDER BY 정렬컬럼1, ...) SubQuery Column FROM SubQuery;
    • 사용법
      1. SELECT RANK() OVER (ORDER BY total DESC) T.* FROM (SELECT no, name, total FROM total) T;
저작자표시 (새창열림)
'old posting/MySQL' 카테고리의 다른 글
  • [SQL] 관계형 데이터 모델
  • [SQL] 데이터베이스 설계 단계와 데이터 모델링 그리고 ER Model
  • [SQL] 제약조건(Constraint)
  • [SQL] 집합연산자
마케팅스프린트
마케팅스프린트
쿠팡, 스마트스토어 자동화 솔루션

티스토리툴바