hn4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com
Full version available at http://4u.jcisio.com/r/article227.htm

Hải Nam

Một vài thủ thuật truy xuất dữ liệu

Chọn n mẩu tin ngẫu nhiên (3.23+)

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)


hainam4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com