Oracle 데이터베이스에서 Rownum과 Row_number의 차이점은 무엇입니까?
-
05-07-2019 - |
문제
차이점은 무엇입니까? ROWNUM
그리고 ROW_NUMBER
?
해결책
Rownum은 쿼리로 반환 된 각 행에 숫자를 할당하는 "Pseudocolumn"입니다.
SQL> select rownum, ename, deptno
2 from emp;
ROWNUM ENAME DEPTNO
---------- ---------- ----------
1 SMITH 99
2 ALLEN 30
3 WARD 30
4 JONES 20
5 MARTIN 30
6 BLAKE 30
7 CLARK 10
8 SCOTT 20
9 KING 10
10 TURNER 30
11 FORD 20
12 MILLER 10
row_number는 행 그룹 내에서 순서에 따라 각 행에 숫자를 할당하는 분석 기능입니다.
SQL> select ename, deptno, row_number() over (partition by deptno order by ename) rn
2 from emp;
ENAME DEPTNO RN
---------- ---------- ----------
CLARK 10 1
KING 10 2
MILLER 10 3
FORD 20 1
JONES 20 2
SCOTT 20 3
ALLEN 30 1
BLAKE 30 2
MARTIN 30 3
TURNER 30 4
WARD 30 5
SMITH 99 1
다른 팁
약간의 독서에서 Rownum은 Oracle이 로우셋에 자동으로 할당 한 값입니다 (평가하기 전에 평가하기 전에는 그렇지 않으므로 항상 ORDER BY ROWNUM
또는 a WHERE ROWNUM < 10
와 함께 ORDER BY
).
row_number () 하위 쿼리 또는 파티션에 의해 반환 된 결과 세트에 행 번호를 할당하는 함수 인 것으로 보입니다.
답변에 언급 된 다른 차이점 외에도 성능도 고려해야합니다. 여기에는이 페이지 매김의 다양한 수단을 비교하는 비 승인적이고 매우 흥미로운 보고서가 있습니다. ROWNUM
비교 ROW_NUMBER() OVER()
:
Rownum 선택한 쿼리에 추가 할 수있는 의사 콜럼 (Pseudocolumn)입니다. 그들은 최종 결과 세트의 일부로 식별 된 시점에 따라 주문됩니다. (#ref)
row_number 분석 기능으로 쿼리에 의해 반환 된 행을 row_number () 함수에 의해 의무화 된 순서로 번호를 매기는 데 사용할 수 있습니다.
rownum은 조건을 평가 한 후 1. 증가 된 결과로 시작합니다. 따라서 rownum> = 1은 테이블의 모든 행을 반환합니다.
제휴하지 않습니다 StackOverflow