Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để chọn top 1 và sắp xếp theo ngày trong Oracle SQL?

... where rownum = 1 order by trans_date desc

Thao tác này sẽ chọn một bản ghi được chọn tùy ý (where rownum = 1 ) và sau đó sắp xếp một bản ghi này (theo thứ tự order by trans_date desc ).

Như được trình bày bởi Ivan, bạn có thể sử dụng một truy vấn con để sắp xếp thứ tự các bản ghi và sau đó giữ bản ghi đầu tiên với where rownum = 1 trong truy vấn bên ngoài. Tuy nhiên, điều này cực kỳ đặc trưng cho Oracle và vi phạm tiêu chuẩn SQL nơi kết quả truy vấn con được coi là không có thứ tự (tức là thứ tự theo mệnh đề có thể bị DBMS bỏ qua).

Vì vậy, tốt hơn hãy đi với giải pháp tiêu chuẩn. Kể từ Oracle 12c:

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

Trong các phiên bản cũ hơn:

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. Cần Oracle SQL để phân chia phạm vi ngày / giờ theo ngày

  2. cx_Oracle và Xử lý ngoại lệ - Các phương pháp hay?

  3. Cách định dạng số phủ định với dấu ngoặc nhọn trong Oracle

  4. Cách lấy đối tượng Connection hiện tại trong Spring JDBC

  5. UNPIVOT trên một số cột không xác định