[SQL] 어떻게 오라클에서 상위 1을해야합니까?
SQL어떻게 오라클에서 상위 1을해야합니까?
어떻게 다음을 수행합니까?
select top 1 Fname from MyTbl
오라클 11g는?
해결법
-
==============================
1.당신은 단지 첫 번째로 선택한 행을 원한다면, 당신은 할 수 있습니다 :
당신은 단지 첫 번째로 선택한 행을 원한다면, 당신은 할 수 있습니다 :
select fname from MyTbl where rownum = 1
또한 순서에 분석 기능을 사용하고 상단의 X를 취할 수 있습니다 :
select max(fname) over (rank() order by some_factor) from MyTbl
-
==============================
2.
SELECT * FROM (SELECT * FROM MyTbl ORDER BY Fname ) WHERE ROWNUM = 1;
-
==============================
3.오라클 12C (6 월 2013)을 사용하면 다음과 같이 사용할 수 있습니다.
오라클 12C (6 월 2013)을 사용하면 다음과 같이 사용할 수 있습니다.
SELECT * FROM MYTABLE --ORDER BY COLUMNNAME -OPTIONAL OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
-
==============================
4.당신은 하위 쿼리 BY 절 ORDER와 ROW_NUMBER ()를 사용하여 단계별로 설명 될 수있다 TOP N.이 교체에서이 열을 사용할 수 있습니다.
당신은 하위 쿼리 BY 절 ORDER와 ROW_NUMBER ()를 사용하여 단계별로 설명 될 수있다 TOP N.이 교체에서이 열을 사용할 수 있습니다.
두 개의 열 이름과 DT_CREATED이 아래의 표를 참조하십시오.
당신이 상관없이 이름의 첫 번째 두 날짜를 취할 필요가있는 경우, 당신은 쿼리 아래를 사용할 수 있습니다. 논리는 쿼리 내부에 기록 된
-- 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 결과를 선택해야합니다. 이러한 경우에 우리는 하위 쿼리에서 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;
결과
-
==============================
5.당신처럼 뭔가를 할 수
당신처럼 뭔가를 할 수
SELECT * FROM (SELECT Fname FROM MyTbl ORDER BY Fname ) WHERE rownum = 1;
또한 분석 기능 RANK 및 / 또는 DENSE_RANK를 사용할 수 있지만 ROWNUM은 아마 가장 쉬운 방법입니다.
-
==============================
6.
select * from ( select FName from MyTbl ) where rownum <= 1;
-
==============================
7.사용하다:
사용하다:
SELECT x.* FROM (SELECT fname FROM MyTbl) x WHERE ROWNUM = 1
오라클 +를 사용하는 경우, 당신은 () ROW_NUMBER 같은 분석 기능을 사용하여 볼 수 있지만 ROWNUM뿐만 아니라 수행하지 않습니다.
-
==============================
8.테이블에서 첫 번째 행을 선택하고 테이블에서 하나 개의 행을 선택하는 것은 두 개의 서로 다른 작업을하고 다른 질의를 필요로한다. 이렇게하는 여러 가지 방법이 있습니다. 그 중 네는 다음과 같습니다
테이블에서 첫 번째 행을 선택하고 테이블에서 하나 개의 행을 선택하는 것은 두 개의 서로 다른 작업을하고 다른 질의를 필요로한다. 이렇게하는 여러 가지 방법이 있습니다. 그 중 네는 다음과 같습니다
먼저
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)
-
==============================
9.저도 같은 문제가 있었는데, 나는이 솔루션이 문제를 해결할 수 있습니다 :
저도 같은 문제가 있었는데, 나는이 솔루션이 문제를 해결할 수 있습니다 :
select a.*, rownum from (select Fname from MyTbl order by Fname DESC) a where rownum = 1
상단의 첫 번째 값을 갖도록하기 전에 당신은 당신의 결과를 주문할 수 있습니다.
행운을 빕니다
from https://stackoverflow.com/questions/3451534/how-do-i-do-top-1-in-oracle by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 SELECT TOP 10 기록 (0) | 2020.03.16 |
---|---|
[SQL] IN 대 또는 WHERE 절 SQL에 (0) | 2020.03.16 |
[SQL] 어떻게 MySQL의에서 다음 / 이전 기록을 얻으려면? (0) | 2020.03.16 |
[SQL] SQL에서 어떻게 범위에서 당신 "에 의해 그룹"할 수 있습니까? (0) | 2020.03.16 |
[SQL] 어떻게 SQL 쿼리를 사용하여 쉼표로 구분 된 목록을 만들려면 어떻게해야합니까? (0) | 2020.03.16 |