我正在尝试按顺序选择记录,但随机限制。
SELECT * FROM tm_winners WHERE paid_out=0 ORDER BY DESC LIMIT RAND(4,8)
然而,似乎我不能有随机的行数限制。我试图抓住4到8行但不是随机的,只是随机限制。
答案 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()
希望有所帮助
威尔