Oracle의 테이블에서 N번째 행 선택
오라클의 테이블에서 N번째 행을 선택하려면 어떻게 해야 합니까?
나는 노력했다.
SELECT PRICE FROM AAA_PRICING WHERE ROWNUM = 2
하지만 그것은 효과가 없었습니다.도와주세요!
일반적인 답변을 기반으로 합니다.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0 ::::P11_QUESTION_ID:127412348064
select *
from ( select a.*, rownum rnum
from ( YOUR_QUERY_GOES_HERE -- including the order by ) a
where rownum <= N_ROWS )
where rnum >= N_ROWS
/
'='과 함께 작동하지 않음(<2 또는 >2로 작동하지만 동일하지는 않음)
할 수 있도록
SELECT Price from (SELECT PRICE, ROWNUM AS RN FROM AAA_PRICING) WHERE RN = 2
그 이유를 설명하기 위해:
그RowNum
는 Oracle에서 제공하는 유사 열입니다.SELECT-clause가 처리되는 동안 생성됩니다.WHERE-clause는 SELECT-clause보다 먼저 처리되므로,RowNum
아직 올바른 값이 없습니다.
Oracle이 상황에서 예외를 두는 것이 말이 되는지 여부를 논쟁할 수 있지만, 다음과 같은 이유 때문입니다.RowNum
여전히 유사 열입니다. 여전히 거기에 있는 것은 유효합니다.
참고: 다음과 혼동하지 마십시오.RowId
그건 완전히 다른 이야기야!
중요 편집:
참고로 제가 쓴 것은RowNum
에 대해서만 해당됩니다.=
,>
,>=
,IN ()
그리고 다른 사람들도.예를 들어 확인하는 경우RowNum < 10
당신은 단지 9개의 레코드를 얻습니다!?왜 그런지 모르겠어요!
Select * From
(
Select Row_Number() OVER (Order by empno) rno, e.*
From scott.emp e
)
Where rno in (1, 3, 11)
SELECT PRICE
FROM (
SELECT PRICE,
ROWNUM rnum
FROM AAA_PRICING
ORDER BY PRICE ASC
)
WHERE rnum = 2
Oracle 12 이상에 있는 경우 결과 오프셋 및 fetch 절을 사용할 수 있습니다.
SELECT PRICE FROM AAA_PRICING
offset 1 rows fetch next 1 rows only
SELECT * FROM
(SELECT PRICE, ROWNUM AS RN FROM AAA_PRICING )
WHERE RN = 2;
select * from (Select Price, rownum as rn from(Select * from AAA_PRICING a order by a.Price))
where rn=2;
가격 란에서 두 번째로 낮은 가격을 제공합니다.두 번째 행만 원하는 경우 Order By 조건을 제거합니다.
ROWNUM
고유한 유사 값을 생성하는 유사 열입니다(존재하는 레코드의 수를 기준으로 함)SELECT
실행 중 진술 o/p)SELECT
절이 유사 열이 다음과 함께 지정된 경우WHERE
그것의 가치가 되는 조항.1
결석으로따라서 지정된 비교 연산자에 따라 동작합니다.
SELECT * FROM (
SELECT ROWNUM RN, E.*
FROM Emp E
)
WHERE RN = 10;
select *
From (select PRICE, DENSE_RANK() over(ORDER BY PRICE desc) as RNO
From AAA_PRICING
) t where RNO=2;
select a.*, rownum rnum
from ( select * from xyz_menu order by priority desc) a
where rownum < 5 ;
xyz_priority desc에서 *를 선택합니다.
가상 테이블 생성 및 가상 테이블에서 행 번호 정의
참고: 오라클의 경우
문제가 해결되었습니다!
Oracle에서 두 번째 행을 선택하는 방법
select SEN_NO,ITEM_NO from (select * from master_machine where
sen_no ='BGCWKKL23' and rownum <=2 order by
rownum desc,timestamp asc) where rownum <=1
감사해요!
언급URL : https://stackoverflow.com/questions/4509167/select-nth-row-from-a-table-in-oracle
'programing' 카테고리의 다른 글
v$sql에서 수신한 Oracle 쿼리에서 매개 변수를 찾는 방법은 무엇입니까? (0) | 2023.07.20 |
---|---|
Python에서 numpy로 자연 로그(예: "ln()")를 수행하는 방법은 무엇입니까? (0) | 2023.07.20 |
Oracle: 여러 열을 동시에 업데이트 (0) | 2023.07.20 |
큰따옴표가 있는 문자열을 표에 삽입 (0) | 2023.07.20 |
수백만 개의 행이 있는 테이블을 사용하여 Oracle에서 임의 행을 더 빠르게 선택할 수 있는 방법은 무엇입니까? (0) | 2023.07.20 |