我试图使用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个问题
答案 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";