[SQL] 오라클 / SQL : - 리턴 제로 행 왜 쿼리 "WHERE ROWNUM> = 5 AND ROWNUM <= 10 기록 SELECT * FROM"않습니다
SQL오라클 / SQL : - 리턴 제로 행 왜 쿼리 "WHERE ROWNUM> = 5 AND ROWNUM <= 10 기록 SELECT * FROM"않습니다
왜 다음 쿼리 반환 '제로'기록을 수행합니다
SELECT * FROM records WHERE rownum >= 5 AND rownum <= 10 OR SELECT * FROM records WHERE rownum >= 5
다음 쿼리 반환 적절한 기록 반면 :
SELECT * FROM records WHERE rownum <= 15
문안 인사, - 인 Ashish
해결법
-
==============================
1.오라클에서 ROWNUM 값은 쿼리의 필터링 단계 후 할당 - 그들은 테이블의 행 수없는, 그들은 쿼리 결과 집합의 행입니다.
오라클에서 ROWNUM 값은 쿼리의 필터링 단계 후 할당 - 그들은 테이블의 행 수없는, 그들은 쿼리 결과 집합의 행입니다.
돌아 오는 첫 번째 행은 항상 ROWNUM 1, 다시 ROWNUM 2 등을 제공 두 번째 행을 받게됩니다 그래서
ROWNUM 값은이 할당 된 후에 증가, 그렇게되는 모든 쿼리와 같은
select * from t where ROWNUM > 1
결과를 반환하지 않습니다. 이 쿼리는 아무 것도 반환됩니다 있도록 역설 바콜입니다 '나는 나에게 반환됩니다 첫 번째 행, 그 이후에만 사람을보고 싶지 않다'라고.
자세한 내용에 ROWNUM 및 제한 결과 : 톰 질문을 참조하십시오.
-
==============================
2.ROWNUM은 의사 열이며, 그것의 값은 쿼리 실행시 사용할 수 없습니다. 이 열을 기준으로 결과를 필터링 할 수 있습니다. 그렇게 말한다면, 그것을 완화하는 작업 방법이 있습니다. (당신의 결과가 매우 큰 경우는 사용하지 않는 것이 좋습니다) 아래를 참조하십시오.
ROWNUM은 의사 열이며, 그것의 값은 쿼리 실행시 사용할 수 없습니다. 이 열을 기준으로 결과를 필터링 할 수 있습니다. 그렇게 말한다면, 그것을 완화하는 작업 방법이 있습니다. (당신의 결과가 매우 큰 경우는 사용하지 않는 것이 좋습니다) 아래를 참조하십시오.
Select a.* From ( Select COL1, COL2, ROWNUM RowNumber From MyTable ) a Where RowNumber = 5;
-
==============================
3.대안 MINUS를 사용하는 것입니다
대안 MINUS를 사용하는 것입니다
SELECT * FROM records WHERE ROWNUM <= 10 minus SELECT * FROM records WHERE ROWNUM <= 5
당신이 더 ID를 선택 할 수 있도록이 고유하지 않은 값을 필터링합니다.
이것은 당신에게 시간을 절약 할 수 있기를 바랍니다.
from https://stackoverflow.com/questions/855422/oracle-sql-why-does-query-select-from-records-where-rownum-5-and-rownum by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 재귀 적 부모 목록을 (0) | 2020.05.26 |
---|---|
[SQL] ALTER 테이블 - MySQL의에서 AUTO_INCREMENT를 추가 (0) | 2020.05.26 |
[SQL] 다른 테이블의 데이터를 사용하여 계산 된 열 만들기 (0) | 2020.05.26 |
[SQL] MySQL의 오류를주고있다 왜 "함수에서 결과 집합을 반환 할 수 없습니다"? (0) | 2020.05.26 |
[SQL] SSRS 2008 보고서의 제로 / 널 해결 방법으로 나누기 (0) | 2020.05.26 |