2014-02-20 128 views
1

我試圖按順序選擇記錄,但隨機限制。RAND沒有隨機順序的限制

SELECT * FROM tm_winners WHERE paid_out=0 ORDER BY DESC LIMIT RAND(4,8) 

但是,似乎我不能有一個隨機限制的行。我很卑鄙,試圖抓住4到8行,但不是隨機的,只是隨機限制。

回答

0

就個人而言,即使它不是最乾淨的方式,Id在var之前設置了var之前的select語句和Limit。

$randomVar = rand(4, 8); 
$sql = 'SELECT * FROM tm_winners WHERE paid_out=0 ORDER BY DESC LIMIT 0,'.$randomVar; 

顯然,如果你的實際結果中想要的隨機性,你可以清楚地聲明

希望它可以幫助

威爾

內重新引入蘭特()
2

你將不得不使用準備好的聲明在LIMIT子句中使用可變金額。

SET @lrand = FLOOR(4 + RAND() * (8 - 4)); 
PREPARE STMT FROM 'SELECT * tm_winners WHERE paid_out=0 ORDER BY DESC LIMIT ?'; 
EXECUTE STMT USING @lrand;