如何在Oracle中做顶1?如何在Oracle中做顶1?(How do I do top 1 in

2019-05-11 05:58发布

我怎么下?

select top 1 Fname from MyTbl

在的Oracle 11g ?

Answer 1:

如果你想只是一个选择的第一行,您可以:

select fname from MyTbl where rownum = 1

您还可以使用分析函数命令,并采取顶的X:

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


Answer 2:

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


Answer 3:

随着甲骨文12C (2013年6月),你可以使用它像以下。

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


Answer 4:

您可以使用ROW_NUMBER()ORDER BY子查询子句和更换使用此列TOP N 。 这可以解释一步步骤。

参见下表其中有两列NAMEDT_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 BYORDER 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;

结果



Answer 5:

你可以这样做

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

您还可以使用分析函数RANK和/或DENSE_RANK,ROWNUM可能是最容易的。



Answer 6:

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


Answer 7:

使用:

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

如果使用Oracle9i的+,你可以看看使用()解析函数ROW_NUMBER一样,但他们不会执行,以及ROWNUM 。



Answer 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)


Answer 9:

我有同样的问题,我可以用这个解决方案解决这个问题:

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

你可以为了你的结果之前,对顶部的第一个值。

祝好运



文章来源: How do I do top 1 in Oracle?