SELECT ROWNUM, NOTICE.* FROM NOTICE WHERE ROWNUM BETWEEN 2 AND 10;하면
결과 값이 안나온다.
왜냐하면 ROWNUM은 컬럼이 아니기때문이다.
런타임 마다 1씩 증가시키는 로우이다 (가장 중요한 의미이다). 따라서 ROWNUM의 시스템은 1부터 출력하며 증가시키는데 WHERE절을 수행할때 TRUE이면 ROWNUM을 생성하고 1씩 증가시킨다 생각하면 된다.
예를들어
| COLUMN | ROWNUM(WHRE절 수행) | 결과 |
| 1 | 1생성(BEWEEN 2 AND 10=TRUE???) | 2가 아니라 FALSE |
| 2 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 3 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 4 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 5 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 6 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 7 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 8 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 9 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 10 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 11 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 12 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 13 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
| 14 | 1생성(FALSE였기때문에 증가못함) | 2가 아니라 FALSE |
결과적으로 아무것도 출력안됨
내가 이해한 내용은 이렇다.
틀리면 지적 부탁드립니다.
'2022 > Oracle' 카테고리의 다른 글
| Oracel-SQL VIEW만들기 (0) | 2021.12.29 |
|---|---|
| Oracle-SQL ROWNUM 작성법 (0) | 2021.12.28 |
| ORACEL-SQL 줄 번호 붙이기 (0) | 2021.12.28 |
| 외부에서 Oracle DB접속 (0) | 2021.12.26 |
| Oracle-UPDATE, DLETE, INSERT, SELECT(작성중) (0) | 2021.12.21 |