sql >> Database teknologi >  >> RDS >> Oracle

Hvordan vælger man top 1 og sorteres efter dato i Oracle SQL?

... where rownum = 1 order by trans_date desc

Dette vælger én post vilkårligt valgt (where rownum = 1 ) og sorterer derefter denne ene post (order by trans_date desc ).

Som vist af Ivan kan du bruge en underforespørgsel, hvor du bestiller posterne og derefter beholde den første post med where rownum = 1 i den ydre forespørgsel. Dette er dog ekstremt Oracle-specifikt og overtræder SQL-standarden, hvor et underforespørgselsresultat betragtes som uordnet (dvs. orden efter klausulen kan ignoreres af DBMS).

Så hellere gå med standardløsningen. Fra 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. Ret "FEJL:kolonnen "colname" eksisterer ikke" i PostgreSQL, når du bruger UNION, EXCEPT eller INTERSECT

  2. Hvordan fungerer PostgreSQL security_barrier views?

  3. mysql trigger lagret trigger bruges allerede af sætningen, som påkaldte lagret trigger

  4. MySQL's HEX() og UNHEX() ækvivalent i Postgres?