Chọn bản ghi gần đây nhất theo ngày trong SQL

Chon Ban Ghi Gan Day Nhat Theo Ngay Trong Sql



Khi làm việc trong cơ sở dữ liệu SQL, bạn có thể gặp trường hợp cần truy xuất bản ghi gần đây nhất từ ​​một bảng nhất định dựa trên ngày. Điều này có thể dành cho mục đích phân trang, quản lý hàng tồn kho, mục đích giám sát, v.v.

Trong hướng dẫn này, chúng tôi sẽ hướng dẫn bạn các phương pháp và kỹ thuật khác nhau mà chúng tôi có thể sử dụng để chọn bản ghi gần đây nhất từ ​​một bảng dựa trên ngày.

Dữ liệu mẫu

Với mục đích trình diễn, chúng tôi sử dụng cơ sở dữ liệu mẫu Sakila có sẵn cho các phiên bản MySQL và PostgreSQL.







Vui lòng tải xuống và nhập cơ sở dữ liệu mẫu trên máy chủ của bạn. Bạn cũng có thể sử dụng bất kỳ tập dữ liệu nào khác nếu thích hợp.



Ví dụ 1: ĐẶT HÀNG THEO

Phương pháp cơ bản và đơn giản nhất mà chúng ta có thể sử dụng để truy xuất bản ghi gần đây nhất theo ngày là sử dụng mệnh đề SQL ORDER BY.



Chúng ta có thể sắp xếp các bản ghi theo thứ tự giảm dần dựa trên giá trị ngày và sau đó giới hạn kết quả ở một hàng.





Lấy ví dụ bảng cho thuê từ cơ sở dữ liệu mẫu Sakila. Nó chứa cột “rental_date” biểu thị ngày phim được thuê.

Chúng ta có thể sử dụng điều này để minh họa cách sử dụng mệnh đề ORDER BY để truy xuất bản ghi gần đây nhất từ ​​bảng.



LỰA CHỌN *

TỪ cho thuê

ĐẶT HÀNG THEO ngày thuê DESC

GIỚI HẠN 1 ;

Trong trường hợp này, chúng tôi sử dụng mệnh đề ORDER BY và chuyển “rental_date” làm cột mục tiêu. Chúng tôi cũng đảm bảo yêu cầu cơ sở dữ liệu sắp xếp các bản ghi theo thứ tự giảm dần.

Cuối cùng, chúng tôi cũng giới hạn số lượng bản ghi đầu ra sẽ trả về hàng gần đây nhất trong bảng.

Ví dụ 2: Sử dụng hàm Max()

Bạn có biết rằng chúng ta có thể sử dụng hàm max() trên các giá trị ngày tháng không? Có, chúng ta có thể sử dụng truy vấn con SQL đơn giản và hàm max() trên các giá trị ngày để truy xuất bản ghi gần đây nhất từ ​​một bảng nhất định.

Hãy xem xét ví dụ sau:

LỰA CHỌN *

TỪ cho thuê

WHERE Rent_date = (CHỌN MAX(ngày_thuê) TỪ thuê);

Sử dụng truy vấn con để tìm ngày thuê tối đa từ bảng. Trong truy vấn chính, chúng ta nên tìm nạp các bản ghi có “rental_date” bằng ngày tối đa.

Ví dụ 3: Hàm cửa sổ

Đối với cơ sở dữ liệu hỗ trợ các hàm cửa sổ, chúng ta có thể sử dụng truy vấn con và hàm row_number() để truy xuất bản ghi gần đây nhất từ ​​bảng như sau:

LỰA CHỌN *

TỪ (

LỰA CHỌN *,

ROW_NUMBER() QUÁ ( ĐẶT HÀNG THEO ngày thuê_DESC) NHƯ rn

TỪ cho thuê

) NHƯ truy vấn con

Ở ĐÂU rn = 1 ;

Trong ví dụ đã cho, truy vấn con gán số hàng cho mỗi hàng dựa trên cột “rental_date” theo thứ tự giảm dần bằng cách sử dụng hàm cửa sổ ROW_NUMBER().

Sau đó, truy vấn bên ngoài sẽ chọn tất cả các cột từ truy vấn con có số hàng là 1, chọn lọc hiệu quả (các) bản ghi cho thuê gần đây nhất.

Phần kết luận

Trong bài đăng này, chúng tôi đã khám phá các phương pháp và kỹ thuật khác nhau mà chúng tôi có thể sử dụng để tìm nạp bản ghi gần đây nhất dựa trên một ngày.