没有随机顺序的兰德限制

时间:2014-02-20 00:35:40

标签: mysql

我正在尝试按顺序选择记录,但随机限制。

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

然而,似乎我不能有随机的行数限制。我试图抓住4到8行但不是随机的,只是随机限制。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

就个人而言,即使它不是最干净的方式,Id在select语句之前设置一个var,在var之前设置Limit。

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

显然,如果你想在实际结果中随机,你可以在声明中明确地重新引入rand()

希望有所帮助

威尔