RAND返回赞成,有时没有值

时间:2016-01-11 15:05:29

标签: php mysql

我试图使用mysql和php进行测验 我想从数据库中随机提取问题 我有一个与兰特功能的混乱 有时它不会产生任何价值,也会产生重复 我试图在网上找到解决方案,但无法实现 这是产生问题的代码的一部分

$link=mysqli_connect("localhost","root","","database"); 
$req="SELECT DISTINCT *
FROM `qst_s`
WHERE `id_qst` = ROUND( RAND()*49 ) + 1 AND `level` = '1'  LIMIT 40";
$result=mysqli_query($link,$req);
$question=$result->fetch_assoc();

顺便说一下,我的数据库级别1有50个问题

1 个答案:

答案 0 :(得分:1)

从MySQL数据库中选择随机行的最简单方法是使用" ORDER BY RAND()"查询中的子句。

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;

这种方法的问题在于它非常慢。它如此慢的原因是MySQL创建了一个包含所有结果行的临时表,并为每个结果行分配一个随机排序索引。然后对结果进行排序和返回。

您的查询将如下所示:

$req="SELECT DISTINCT *
FROM `qst_s`
WHERE `level` = '1'
ORDER BY RAND()
LIMIT 40";