sql >> Databasteknik >  >> RDS >> Oracle

Hur väljer man topp 1 och sorteras efter datum i Oracle SQL?

... where rownum = 1 order by trans_date desc

Detta väljer en post godtyckligt vald (where rownum = 1 ) och sorterar sedan denna post (order by trans_date desc ).

Som visas av Ivan kan du använda en underfråga där du beställer posterna och sedan behålla den första posten med where rownum = 1 i den yttre frågan. Detta är dock extremt Oracle-specifikt och bryter mot SQL-standarden där ett subquery-resultat anses vara oordnat (d.v.s. order by-satsen kan ignoreras av DBMS).

Så det är bättre att gå med standardlösningen. Från och med Oracle 12c:

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

I äldre versioner:

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


  1. ta bort SQLite-databas när du uppdaterar ny version av programmet

  2. KNIME

  3. Hur man får alla fel av alla SSIS-paket i en lösning

  4. Hur man installerar MySQL Workbench på Windows