我怎么下?
select top 1 Fname from MyTbl
在的Oracle 11g ?
我怎么下?
select top 1 Fname from MyTbl
在的Oracle 11g ?
如果你想只是一个选择的第一行,您可以:
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;
随着甲骨文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 ORDER BY Fname )
WHERE rownum = 1;
您还可以使用分析函数RANK和/或DENSE_RANK,但ROWNUM可能是最容易的。
select * from (
select FName from MyTbl
)
where rownum <= 1;
使用:
SELECT x.*
FROM (SELECT fname
FROM MyTbl) x
WHERE ROWNUM = 1
如果使用Oracle9i的+,你可以看看使用()解析函数ROW_NUMBER一样,但他们不会执行,以及ROWNUM 。
要选择从表格的第一行,并从表中选择一排是两个不同的任务,需要不同的查询。 有许多可能的方式来做到这一点。 他们四个人分别是:
第一
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)
我有同样的问题,我可以用这个解决方案解决这个问题:
select a.*, rownum
from (select Fname from MyTbl order by Fname DESC) a
where
rownum = 1
你可以为了你的结果之前,对顶部的第一个值。
祝好运