Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chọn 5 hàng ngẫu nhiên trong 50 hàng gần nhất MySQL

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.