... 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;