Mysql 如何编写随机选择问题的SQL查询
我有以下查询,从数据库中随机选择一个问题进行问答游戏Mysql 如何编写随机选择问题的SQL查询,mysql,sql,Mysql,Sql,我有以下查询,从数据库中随机选择一个问题进行问答游戏 SELECT * FROM questionsbank WHERE QuestionID <> 1 ORDER BY RAND() LIMIT 1 但是,当用户正确回答问题时,我必须随机选择与刚才选择的问题不同的另一个问题,并继续。在sql中如何实现这一点?我的想法是声明一个变量并推送已回答的问题ID,然后使用NOT IN语句,但我不知道如何实现它。我猜在某个时刻,您必须将用户答案保存在db上 因此,如果您有表格:
SELECT
*
FROM
questionsbank
WHERE QuestionID <> 1
ORDER BY RAND()
LIMIT 1
但是,当用户正确回答问题时,我必须随机选择与刚才选择的问题不同的另一个问题,并继续。在sql中如何实现这一点?我的想法是声明一个变量并推送已回答的问题ID,然后使用NOT IN语句,但我不知道如何实现它。我猜在某个时刻,您必须将用户答案保存在db上 因此,如果您有表格:
Answers (answer_id (pk), user_id (fk), question_id (fk), answer ...);
您可以按如下方式筛选已回答的问题:
SELECT Q.*
FROM QuestionsBank Q
LEFT JOIN Answers A
ON Q.question_id = A.question_id
AND A.user_id = @yourUser
WHERE A.question_id is NULL
ORDER BY RAND()
LIMIT 1
其中问题ID不在1,2,4,10[,…]。。。你的代码是正确的,按随机数排序,只选一个。若要排除已选择的问题,您的建议也是正确的,请在后续查询中排除带有not in或类似名称的ID。我将从一个表开始,该表中用户正确回答的每个问题都有一行。