반응형
Oracle/SQL: 쿼리 "SELECT * From records WHEROWNUM >= 5 ANDROWNUM <= 10" - 0개의 행을 반환하는 이유
다음 쿼리가 '0' 레코드를 반환하는 이유는 무엇입니까?
SELECT * WHEROWNUM >= 5 AND Rownum <= 10 오어 SELECT * From records WHEROWNUM > = 5
반면 다음 쿼리는 적절한 레코드를 반환합니다.
SELECT * WHERNUM <= 15에서 레코드를 선택합니다.
안부 전해요,
- 아시시
Oracle에서 Rownum 값은 쿼리의 필터링 단계 후에 할당됩니다. 테이블의 행이 아니라 쿼리 결과 집합의 행입니다.
그래서 돌아오는 첫번째 줄에는 항상 1번 줄, 돌아오는 두번째 줄에는 2번 줄 등이 주어집니다.
로넘 값은 할당된 후에만 증가하므로 다음과 같은 쿼리가 있습니다.
select * from t where ROWNUM > 1
결과를 반환하지 않습니다.이 질문은 '나는 나에게 돌아오는 첫 번째 행을 보고 싶지 않다, 그 다음 행만 보고 싶다'라는 일종의 역설이기 때문에 아무것도 돌려받지 못합니다.
톰에게 묻기:자세한 내용은 ROWNUM 및 제한 결과를 참조하십시오.
ROWNUM은 의사열이며 쿼리 실행 시 해당 값을 사용할 수 없습니다.따라서 이 열을 기준으로 결과를 필터링할 수 없습니다.그런 상황에서, 그것을 완화시킬 수 있는 방법들이 있습니다.아래를 참고하시기 바랍니다(결과가 매우 큰 경우에는 사용하지 않는 것이 좋습니다).
Select a.* From
(
Select COL1, COL2, ROWNUM RowNumber From MyTable
) a
Where
RowNumber = 5;
사용하는 것이 대안입니다.MINUS
SELECT * FROM records
WHERE ROWNUM <= 10
minus SELECT * FROM records
WHERE ROWNUM <= 5
그러면 unique 이외의 값이 필터링되므로 id를 선택하는 것이 좋습니다.
시간을 좀 아끼길 바랍니다.
언급URL : https://stackoverflow.com/questions/855422/oracle-sql-why-does-query-select-from-records-where-rownum-5-and-rownum
반응형
'programing' 카테고리의 다른 글
| JSON 웹 서비스에서 오류 상태를 반환하는 기존 방식이 있습니까? (0) | 2023.10.24 |
|---|---|
| Pure css 닫기 버튼 (0) | 2023.10.24 |
| jQuery Get에서 응답 헤더 위치를 가져오는 방법? (0) | 2023.10.19 |
| xml 파일에서 BOM 문자를 제거하려면 어떻게 해야 합니까? (0) | 2023.10.19 |
| 워드프레스에서 프로그래밍 방식으로 사용자 아바타 변경 (0) | 2023.10.19 |