Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wybrać pierwszą 1 i uporządkowaną według daty w Oracle SQL?

... where rownum = 1 order by trans_date desc

Powoduje to wybranie jednego arbitralnie wybranego rekordu (where rownum = 1 ), a następnie sortuje ten jeden rekord (order by trans_date desc ).

Jak pokazał Ivan, możesz użyć podzapytania, w którym możesz uporządkować rekordy, a następnie zachować pierwszy rekord z where rownum = 1 w zewnętrznym zapytaniu. Jest to jednak bardzo specyficzne dla Oracle i narusza standard SQL, w którym wynik podzapytania jest uważany za nieuporządkowany (tj. klauzula order by może zostać zignorowana przez DBMS).

Więc lepiej wybierz standardowe rozwiązanie. Od Oracle 12c:

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

W starszych wersjach:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urządzenie do odzyskiwania danych bez utraty danych

  2. Oracle:jaka jest sytuacja, aby użyć RAISE_APPLICATION_ERROR?

  3. Jak udokumentować bazę danych

  4. Dodaj klucz podstawowy automatycznego przyrostu do istniejącej tabeli w Oracle

  5. Jak korzystać z funkcji łączenia w Oracle