sql >> Databáze >  >> RDS >> Oracle

Jak vybrat top 1 a seřadit podle data v Oracle SQL?

... where rownum = 1 order by trans_date desc

Tím se vybere jeden libovolně vybraný záznam (where rownum = 1 ) a poté seřadí tento jeden záznam (order by trans_date desc ).

Jak ukázal Ivan, můžete použít poddotaz, ve kterém si objednáte záznamy a poté uchováte první záznam s where rownum = 1 ve vnějším dotazu. To je však extrémně specifické pro Oracle a porušuje to standard SQL, kde je výsledek dílčího dotazu považován za neuspořádaný (tj. pořadí podle klauzule může být DBMS ignorováno).

Proto je lepší použít standardní řešení. Od Oracle 12c:

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

Ve starších verzích:

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


  1. Funkce POWER() v Oracle

  2. Jak odečíst rok od data v MariaDB

  3. Chyba instalace mysql-python:Nelze otevřít začleněný soubor 'config-win.h'

  4. Jak zjistím, zda je můj systém Oracle nastaven na podporu Unicode nebo vícebajtových znaků?