Kết hợp subquery lấy 50 hàng mới nhất (ORDER BY ID DESC LIMIT 50) rồi áp dụng ORDER BY RAND() LIMIT 5 trên tập con đó.
Ví dụ minh họa
Tạo bảng 58 hàng:
mysql> CREATE TABLE DemoTable1853 (UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY); mysql> INSERT INTO DemoTable1853 VALUES(),()... (58 hàng);
Truy vấn:
mysql> SELECT tbl.* FROM (
SELECT tbl1.* FROM DemoTable1853 tbl1
ORDER BY UserId DESC LIMIT 50
) tbl
ORDER BY RAND() LIMIT 5;
Kết quả (ngẫu nhiên 5 ID trong 9-58):
+--------+ | UserId | +--------+ | 19 | | 24 | | 43 | | 36 | | 48 | +--------+
Lưu ý hiệu suất: Subquery LIMIT 50 giảm tập dữ liệu trước khi RAND(), tránh quét toàn bảng lớn.