Hoe doe ik het volgende?
select top 1 Fname from MyTbl
in Oracle 11g ?
1, Autoriteit 100%
Als u alleen een eerste geselecteerde rij wilt, kunt u:
select fname from MyTbl where rownum = 1
U kunt ook analytische functies gebruiken om de top x:
te bestellen en te nemen
select max(fname) over (rank() order by some_factor) from MyTbl
2, Autoriteit 64%
SELECT *
FROM (SELECT * FROM MyTbl ORDER BY Fname )
WHERE ROWNUM = 1;
3, Autoriteit 14%
Met Oracle 12c (juni 2013), kunt u het gebruiken zoals het volgende.
SELECT * FROM MYTABLE
--ORDER BY COLUMNNAME -OPTIONAL
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY
Antwoord 4, autoriteit 4%
select * from (
select FName from MyTbl
)
where rownum <= 1;
Antwoord 5, autoriteit 4%
Je kunt zoiets doen
SELECT *
FROM (SELECT Fname FROM MyTbl ORDER BY Fname )
WHERE rownum = 1;
U kunt ook de analytische functies RANKen/of DENSE_RANKgebruiken, maar ROWNUMis waarschijnlijk het gemakkelijkst.
Antwoord 6, autoriteit 2%
Gebruik:
SELECT x.*
FROM (SELECT fname
FROM MyTbl) x
WHERE ROWNUM = 1
Als u Oracle9i+ gebruikt, kunt u kijken naar met analytische functies zoals ROW_NUMBER () maar ze zullen niet zo goed presteren als ROWNUM.
Antwoord 7
De eerste rij uit een tabel selecteren en één rij uit een tabel selecteren zijn twee verschillende taken en hebben een andere query nodig. Er zijn veel mogelijke manieren om dit te doen. Vier daarvan zijn:
Eerste
select max(Fname) from MyTbl;
Tweede
select min(Fname) from MyTbl;
Derde
select Fname from MyTbl where rownum = 1;
Vierde
select max(Fname) from MyTbl where rowid=(select max(rowid) from MyTbl)
Antwoord 8
Ik had hetzelfde probleem en ik kan dit oplossen met deze oplossing:
select a.*, rownum
from (select Fname from MyTbl order by Fname DESC) a
where
rownum = 1
U kunt uw resultaat eerder bestellen om de eerste waarde bovenaan te krijgen.
Veel succes