sql >> Database >  >> RDS >> Oracle

Hoe top 1 en gesorteerd op datum selecteren in Oracle SQL?

... where rownum = 1 order by trans_date desc

Dit selecteert een willekeurig gekozen record (where rownum = 1 ) en sorteert dan dit ene record (order by trans_date desc ).

Zoals Ivan laat zien, kun je een subquery gebruiken waarin je de records bestelt en vervolgens de eerste record behouden met where rownum = 1 in de buitenste vraag. Dit is echter extreem Oracle-specifiek en schendt de SQL-standaard waarbij een subqueryresultaat als ongeordend wordt beschouwd (d.w.z. de clausule op volgorde kan worden genegeerd door het DBMS).

Ga dus liever voor de standaardoplossing. Vanaf Oracle 12c:

select * 
from table_name 
order by trans_date desc
fetch first 1 row only;

In oudere versies:

select *
from
(
  select t.*, row_number() over (order by trans_date desc) as rn
  from table_name t
)
where rn = 1;


  1. Hoe te voorkomen dat u + in versienummer gebruikt met SQLiteAssetHelper

  2. De MyRocks Storage Engine gebruiken met MariaDB Server

  3. Hoe leidende witruimte in SQL Server te verwijderen - LTRIM()

  4. Een overzicht van verschillende hulpplanknooppunten in PostgreSQL