gpt4 book ai didi

php - MySQL中不重复记录的随机数据列表

转载 作者:行者123 更新时间:2023-11-30 00:54:48 24 4
gpt4 key购买 nike

已经过去 5 个小时了,我仍在尝试将我的数据随机列出到我的页面上。我检查过很多 sample 。这是我在写下之前尝试过的。

数据库架构

--tblquestions--
id(int)
Question(varchar)
GroupId(int)

--tblhints--
id(int)
hint(varchar)
pic(varchar)
GroupId(int)

tblquestions.GroupId = tblhints.GroupId

tblquestions.Question字段中,每条记录有两个值。例如:

id(1) Question(America) GroupId(5)
id(2) Question(Germany) GroupId(5)

id(3) Question(Italy) GroupId(6)
id(4) Question(Ukraine) GroupId(6)

像这样。

这是一个民意调查应用

我正在向用户提供提示和图片,有两个选项(tblquestions.Question)。用户选择一个,问题就会一直持续到最后。

而且它必须随机加载。

我尝试过 order bygroup by 和许多可能性。什么都没有。

它的列表是随机的,但我的页面中总是有重复的记录。

尝试过的例子:

<?php
$sorusayisi = 57;
for ($i=1; $i < $sorusayisi ; $i++) {

// $soruId = array();
$soruQues = array();
$soruCevapId = array();

$sqlSorular=mysql_query("SELECT * FROM tblquestions AS r1
JOIN (SELECT (RAND() * (SELECT MAX(id) FROM tblquestions)) AS id) AS r2
WHERE r1.Id >= r2.Id");

while($rsSorular = mysql_fetch_array($sqlSorular)) {

$soruCevapId[] = $rsSorular["Id"];
$soruQues[] = $rsSorular["Question"];
$soruGrId = intval($rsSorular["GroupId"]);

}

$sHint = mysql_query("SELECT * FROM tblhints WHERE GroupId=".$soruGrId."");
$rsHint = mysql_fetch_array($sHint);
$soruHint = $rsHint["hint"];
$soruPic = $rsHint["pic"];

$sCevap = mysql_query("SELECT * FROM tblanswers WHERE GroupId=".$soruGrId."");
$rsCevap = mysql_fetch_array($sCevap);
$cevapId = $rsCevap["Answer"];
// $soruPic = $rsCevap["pic"];


?>
//div codes

<?php

}>
<小时/>
 for ($i=1; $i < $kac_soru_sorulacak ; $i++) { 

$soruCevapId = array();
$question = array();


$hintsql = mysql_query("SELECT * FROM tblhints GROUP BY GroupId ORDER BY rand() LIMIT 1");
$hintrs = mysql_fetch_assoc($hintsql);
// $sorular = array();
$hintId = intval($hintrs["id"]);
$hint = $hintrs["hint"];
$foto = $hintrs["pic"];

$grupid = intval($hintrs["GroupId"]);
################

################
$cevapsql = mysql_query("select * from tblanswers where GroupId=".$grupid."");
$cevaprs = mysql_fetch_assoc($cevapsql);
$cevapId = intval($cevaprs["Answer"]);
################

################
$hintsayi = mysql_num_rows($hintsql);
$siksql = mysql_query("select * from tblquestions where GroupId=".$grupid." order by rand()");

while ($sikrs=mysql_fetch_assoc($siksql)) {
$question[] =$sikrs["Question"];
$soruCevapId[] = $sikrs["Id"];
}

################

?>

您能给我看一些代码示例吗?

非常感谢

最佳答案

如果您的表不太大,您可以使用随机数创建字段 rdm_order(类型:FLOAT)并按其排序。正如我所说,如果您的 table 太大,可能会太贵,但另一方面,这是一个非常快速且简单的解决方案:

UPDATE tblquestions SET rdm_order=RAND();
SELECT * FROM tblquestions WHERE GroupId={$grupid} ORDER BY rdm_order;

不过,您也可以在每个用户 session 中仅运行一次 UPDATE。

关于php - MySQL中不重复记录的随机数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20670717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com