SQL |
SELECT * FROM tablename ORDER BY RAND() LIMIT n |
Nếu bạn muốn kết quả vẫn là ngẫu nhiên, nhưng với một phân bố xác định (một vài record có độ ưu tiên hơn), bạn cần tạo thêm một trường weight, giá trị càng lớn thì độ ưu tiên của mẩu tin đó càng cao (dễ được chọn). Sau đó dùng câu sau:
SQL |
SELECT * FROM tablename ORDER BY RAND()*weight LIMIT n |
Bản chất của các câu truy vấn trên là sự tính toán lại của hàm RAND() đối với mỗi mẩu tin (chính xác là với mỗi lần kiểm tra điều kiện WHERE)