gpt4 book ai didi

php - 使用设置参数选择 'random' 结果

转载 作者:行者123 更新时间:2023-11-29 03:14:03 25 4
gpt4 key购买 nike

我正在开发一个系统,该系统从数据库中选择问题来生成测试/考试。

每个问题都有一组“问题类型”(“q_type”)。我有一个问题数据库,需要选择 4 个问题,每个问题都有不同的“q_type”。

目前选择4个随机问题的基本查询是:

SELECT * FROM questions ORDER BY RAND() LIMIT 0,4

这显然没有考虑到每个问题都应该有不同的“q_type”这一事实。

我希望能够按照这个逻辑做一些事情(我需要一些东西来填充方括号):

SELECT * FROM questions WHERE ['q_type' is DISTINCT] ORDER BY RAND() LIMIT 0,4

我尝试过使用 GROUP BY 'q_type',但这只是为每个 'q_type' 给出了第一个问题,而不是每次都给出该类型的不同问题。

任何帮助都会很棒,因为我现在完全被难住了(我正在使用一个夸张的 PHP 循环,它只查询数据库 4 次,每次更新 WHERE 'q_type'!=XX)。

感谢您的帮助!

最佳答案

我认为没有一种简单的方法可以通过简单的查询来做到这一点。您可能可以使用 mysql 存储过程来完成,或者为了节省一些开发时间,可以在 php 中完成。

如果问题池不是特别大,而且这不是经常发生的事情,那么您应该可以使用 4 个单独的查询(每个 q_type 一个),甚至可以获取整个问题集进入 php,然后使用它来获得 4 个随机问题,每个 q_type 一个。

使用以下(未经测试的)代码,您将获得随机排序的所有问题并循环遍历它们以获得每个 q_type 的第一个问题,然后停止。这不是最优雅的解决方案,但同样,对于足够小的数据集和频率,它应该没问题。

$questions = array() ;
$res = mysql_query('SELECT * FROM questions ORDER BY RAND()') ;
while ($row = mysql_fetch_assoc($res)) {

//if we have all 4, stop
if (count($questions) == 4) {
break ;
}

$currType = $row['q_type'] ;
$currQuestion = $row['questionTitle'] ;

if (isset($questions[$currType])) {
//already have it, continue to the next
continue ;
}

$questions[$currType] = $currQuestion ;

}

关于php - 使用设置参数选择 'random' 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683979/

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