2014-02-20 86 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;