带有随机数的SQL select语句



我目前正在创建某种类型的问答网站。

我的计划是:在sql语句中创建一个随机数,从表中得到一个随机问题。

例如,每个问题都有一个数字id->创建随机数(最大数量=我表中的记录(->通过id 选择随机问题

我尝试了以下语句:

SELECT *
FROM question
WHERE ID = (SELECT FLOOR(RAND() * (SELECT COUNT(ID) FROM question)) + 1);

我的问题:有时我没有结果,有时我得到了两个结果,有时它按计划运行。

如果我自己尝试SELECT FLOOR等,随机数会非常有效。

有什么建议吗?提前感谢我的朋友们!

如果你没有太多问题,你可以简单地做:

select q.*
from question q
order by rand()
limit 1;

如果你有很多问题,那么减少数量对你的表现很重要。类似于:

select q.*
from question q cross join
(select count(*) from q) qq  
where rand() < 100 / q   -- get a sample of about 100
order by rand()
limit 1;

最新更新