복붙노트

[SQL] 어떻게 오라클에서 상위 1을해야합니까?

SQL

어떻게 오라클에서 상위 1을해야합니까?

어떻게 다음을 수행합니까?

select top 1 Fname from MyTbl

오라클 11g는?

해결법

  1. ==============================

    1.당신은 단지 첫 번째로 선택한 행을 원한다면, 당신은 할 수 있습니다 :

    당신은 단지 첫 번째로 선택한 행을 원한다면, 당신은 할 수 있습니다 :

    select fname from MyTbl where rownum = 1
    

    또한 순서에 분석 기능을 사용하고 상단의 X를 취할 수 있습니다 :

    select max(fname) over (rank() order by some_factor) from MyTbl
    
  2. ==============================

    2.

    SELECT *
      FROM (SELECT * FROM MyTbl ORDER BY Fname )
     WHERE ROWNUM = 1;
    
  3. ==============================

    3.오라클 12C (6 월 2013)을 사용하면 다음과 같이 사용할 수 있습니다.

    오라클 12C (6 월 2013)을 사용하면 다음과 같이 사용할 수 있습니다.

    SELECT * FROM   MYTABLE
    --ORDER BY COLUMNNAME -OPTIONAL          
    OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
    
  4. ==============================

    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. ==============================

    5.당신처럼 뭔가를 할 수

    당신처럼 뭔가를 할 수

        SELECT *
          FROM (SELECT Fname FROM MyTbl ORDER BY Fname )
     WHERE rownum = 1;
    

    또한 분석 기능 RANK 및 / 또는 DENSE_RANK를 사용할 수 있지만 ROWNUM은 아마 가장 쉬운 방법입니다.

  6. ==============================

    6.

    select * from (
        select FName from MyTbl
    )
    where rownum <= 1;
    
  7. ==============================

    7.사용하다:

    사용하다:

    SELECT x.*
      FROM (SELECT fname 
              FROM MyTbl) x
     WHERE ROWNUM = 1
    

    오라클 +를 사용하는 경우, 당신은 () ROW_NUMBER 같은 분석 기능을 사용하여 볼 수 있지만 ROWNUM뿐만 아니라 수행하지 않습니다.

  8. ==============================

    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. ==============================

    9.저도 같은 문제가 있었는데, 나는이 솔루션이 문제를 해결할 수 있습니다 :

    저도 같은 문제가 있었는데, 나는이 솔루션이 문제를 해결할 수 있습니다 :

    select a.*, rownum 
    from (select Fname from MyTbl order by Fname DESC) a
    where
    rownum = 1
    

    상단의 첫 번째 값을 갖도록하기 전에 당신은 당신의 결과를 주문할 수 있습니다.

    행운을 빕니다

  10. from https://stackoverflow.com/questions/3451534/how-do-i-do-top-1-in-oracle by cc-by-sa and MIT license