Sử dụng subquery: trước lấy 20 hàng mới nhất (ORDER BY DESC LIMIT 20), sau đó ORDER BY RAND() LIMIT 5.
Tạo bảng:
mysql> create table DemoTable -> ( -> ShippingDate datetime -> ); Query OK, 0 rows affected (0.51 sec)
Chèn 29 bản ghi ngày tháng...
Hiển thị dữ liệu (29 hàng):
+---------------------+ | ShippingDate | +---------------------+ | 2019-01-01 00:00:00 | | 2019-01-03 00:00:00 | | ... | | 2019-05-18 00:00:00 | +---------------------+ 29 rows in set (0.00 sec)
Truy vấn lấy 5 hàng ngẫu nhiên từ 20 hàng gần nhất:
mysql> select tbl1.* from (select *from DemoTable ORDER BY ShippingDate DESC LIMIT 20 ) as tbl1 -> ORDER BY RAND() LIMIT 5;
Kết quả
+---------------------+ | ShippingDate | +---------------------+ | 2019-03-14 00:00:00 | | 2019-05-13 00:00:00 | | 2019-03-25 00:00:00 | | 2019-05-16 00:00:00 | | 2019-03-10 00:00:00 | +---------------------+ 5 rows in set (0.04 sec)