[SQL] SQL ROWNUM 어떻게 특정 범위 사이에 행을 반환합니다
SQLSQL ROWNUM 어떻게 특정 범위 사이에 행을 반환합니다
어떻게 ROWNUM 값의 특정 범위를 반환 할 수 있습니다?
나는 다음을 시도하고있다 :
select * from maps006 where rownum >49 and rownum <101
이것은 <연산자 일치 행만을 반환한다.
해결법
-
==============================
1.
SELECT * from ( select m.*, rownum r from maps006 m ) where r > 49 and r < 101
-
==============================
2.
SELECT * FROM ( SELECT q.*, rownum rn FROM ( SELECT * FROM maps006 ORDER BY id ) q ) WHERE rn BETWEEN 50 AND 100
이중 중첩 된보기를합니다. ROWNUM은 ORDER BY 전에 평가, 그래서 그것은 올바른 번호가 필요합니다.
당신이 ORDER BY 절을 생략하면 일관된 주문을받지 않습니다.
-
==============================
3.나는 그러나, 최신 버전의 새로운 기능을 언급하는 데 유용합니다,이 오래된 질문 알아요.
나는 그러나, 최신 버전의 새로운 기능을 언급하는 데 유용합니다,이 오래된 질문 알아요.
이후 오라클 12C에서, 당신은 새로운 최고-N 행 제한 기능을 사용할 수 있습니다. 필요가 하위 쿼리, ROWNUM에 대한 종속성을 쓸 수 있습니다.
예를 들어, 쿼리 아래의 오름차순으로 7 가장 높은 급여까지 4 가장 높은 사이의 직원을 반환합니다 :
SQL> SELECT empno, sal 2 FROM emp 3 ORDER BY sal 4 OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY; EMPNO SAL ---------- ---------- 7654 1250 7934 1300 7844 1500 7499 1600 SQL>
-
==============================
4.나는 이것에 대한 해결책을 찾고,이 위대한 발견 솔루션을 설명하는 기사 관련 발췌
나는 이것에 대한 해결책을 찾고,이 위대한 발견 솔루션을 설명하는 기사 관련 발췌
select * enter code here from ( select /*+ FIRST_ROWS(n) */ a.*, ROWNUM rnum from ( your_query_goes_here, with order by ) a where ROWNUM <= :MAX_ROW_TO_FETCH ) where rnum >= :MIN_ROW_TO_FETCH;
이제 실제 예제 (행 148, 149 및 150을 얻는다)
select * from (select a.*, rownum rnum from (select id, data from t order by id, rowid) a where rownum <= 150 ) where rnum >= 148;
-
==============================
5.
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Id) AS RowNum, * FROM maps006) AS DerivedTable WHERE RowNum BETWEEN 49 AND 101
-
==============================
6.또한 절 CTE를 사용하여 수행 할 수 있습니다.
또한 절 CTE를 사용하여 수행 할 수 있습니다.
WITH maps AS (Select ROW_NUMBER() OVER (ORDER BY Id) AS rownum,* from maps006 ) SELECT rownum, * FROM maps WHERE rownum >49 and rownum <101
-
==============================
7.
select * from emp where rownum <= &upperlimit minus select * from emp where rownum <= &lower limit ;
from https://stackoverflow.com/questions/4552769/sql-rownum-how-to-return-rows-between-a-specific-range by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클에서 동적으로 행을 열로 회전식 (0) | 2020.04.01 |
---|---|
[SQL] ERROR 1148 : 사용 된 명령이 MySQL 버전과 함께 사용할 수 없습니다 (0) | 2020.04.01 |
[SQL] CodeIgniter의 액티브 레코드 패턴 UNION 쿼리 (0) | 2020.04.01 |
[SQL] SQL 서버에 매개 변수로 테이블을 통과 UDF (0) | 2020.04.01 |
[SQL] 목록 <>에 대한 SQL 저장 프로 시저를 전달 (0) | 2020.04.01 |