我目前正在创建某种类型的问答网站。
我的计划是:在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;