Oracle에서 톱1을 달성하려면 어떻게 해야 합니까?
어떻게 하면 좋을까요?
select top 1 Fname from MyTbl
처음 선택한 행만 원하는 경우 다음을 수행할 수 있습니다.
select fname from MyTbl where rownum = 1
분석 함수를 사용하여 상위 x:를 주문하고 가져올 수도 있습니다.
select max(fname) over (rank() order by some_factor) from MyTbl
SELECT *
FROM (SELECT * FROM MyTbl ORDER BY Fname )
WHERE ROWNUM = 1;
Oracle 12c(2013년 6월)에서는 다음과 같이 사용할 수 있습니다.
SELECT * FROM MYTABLE
--ORDER BY COLUMNNAME -OPTIONAL
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
사용할 수 있습니다.ROW_NUMBER()
와 함께ORDER BY
하위 절의 절을 사용하여 이 열을 대체하십시오.TOP N
. 이것은 차근차근 설명할 수 있습니다.
두 개의 열이 있는 아래 표를 참조하십시오.NAME
그리고.DT_CREATED
.
만약 당신이 처음 두 날짜만 가져가야 한다면NAME
, 다음 쿼리를 사용할 수 있습니다.이 논리는 쿼리 내부에 작성되었습니다.
-- The number of records can be specified in WHERE clause
SELECT RNO,NAME,DT_CREATED
FROM
(
-- Generates numbers in a column in sequence in the order of date
SELECT ROW_NUMBER() OVER (ORDER BY DT_CREATED) AS RNO,
NAME,DT_CREATED
FROM DEMOTOP
)TAB
WHERE RNO<3;
결과
상황에 따라서는,TOP N
각각의 결과NAME
이 경우,PARTITION BY
와 함께ORDER BY
하위 절의 절아래 쿼리를 참조하십시오.
-- The number of records can be specified in WHERE clause
SELECT RNO,NAME,DT_CREATED
FROM
(
--Generates numbers in a column in sequence in the order of date for each NAME
SELECT ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY DT_CREATED) AS RNO,
NAME,DT_CREATED
FROM DEMOTOP
)TAB
WHERE RNO<3;
결과
select * from (
select FName from MyTbl
)
where rownum <= 1;
뭐 이런 거 할 수 있어요
SELECT *
FROM (SELECT Fname FROM MyTbl ORDER BY Fname )
WHERE rownum = 1;
분석 함수 RANK 및/또는 DEXINK를 사용할 수도 있지만 ROWNUM이 가장 쉽습니다.
용도:
SELECT x.*
FROM (SELECT fname
FROM MyTbl) x
WHERE ROWNUM = 1
Oracle9i+를 사용하는 경우 ROW_NUMBER()와 같은 분석 함수를 사용할 수 있지만 ROWNUM만큼 잘 수행되지는 않습니다.
저도 같은 문제가 있었습니다.이 문제를 해결할 수 있는 방법은 다음과 같습니다.
select a.*, rownum
from (select Fname from MyTbl order by Fname DESC) a
where
rownum = 1
첫 번째 값이 맨 위에 오도록 결과를 정렬할 수 있습니다.
행운을 빌어요
테이블에서 첫 번째 행을 선택하는 것과 테이블에서 한 행을 선택하는 것은 서로 다른 작업이며 다른 쿼리가 필요합니다.그렇게 하는 방법은 여러 가지가 있다.그 중 4개는 다음과 같습니다.
첫번째
select max(Fname) from MyTbl;
둘째
select min(Fname) from MyTbl;
셋째
select Fname from MyTbl where rownum = 1;
넷째
select max(Fname) from MyTbl where rowid=(select max(rowid) from MyTbl)
언급URL : https://stackoverflow.com/questions/3451534/how-do-i-do-top-1-in-oracle
'programing' 카테고리의 다른 글
JSON에서 중첩된 python 개체를 인코딩하는 중 (0) | 2023.03.10 |
---|---|
Python용 cx_Oracle 설치 (0) | 2023.03.10 |
Oracle 포트를 포트 8080에서 변경 (0) | 2023.03.10 |
Angular JS: 컨트롤러 및 콘텐츠 로드 지연 (0) | 2023.03.10 |
Swagger TypeError: '창'에서 'fetch'를 실행하지 못했습니다. GET/HEAD 메서드를 사용하는 요청에는 본문을 사용할 수 없습니다. (0) | 2023.03.10 |