好的,我在MySQL中不是很好,但我可以做基础......所以现在我需要一些帮助。 我有两张桌子 - 问题(存储一些问题和可用的答案)和 log(存储来自previus回答问题的日志)
问题 -
questionId, question, answer1...balbalba
1 'question balba' 'Avaliable answer1'
2 'question2 blaba' 'Other answer'
日志 -
id, questionId, userId
1 1 123456
此处存储userId
1
questionId
所以我需要一个查询,从“问题”中找到用户'123456'未被回答的随机问题。 我希望你帮助我...
答案 0 :(得分:1)
SELECT q.questionId
FROM questions AS q
LEFT OUTER JOIN log AS l ON q.questionId = l.questionId AND l.userId = 123456
WHERE l.id IS NULL
这为您提供了用户123456未回答的问题。
要随机选择其中一个,请附加
ORDER BY RAND()
LIMIT 1
查询。
ORDER BY RAND()
的问题是,它不能很好地扩展。但是,连接条件已经在减小结果集的大小方面做得很好(每个问题最多只能给出一个结果)。如果问题的数量很少(大约100),我不会担心ORDER BY RAND()
的性能影响。如果您有很多问题,请查看问题How can i optimize MySQL's ORDER BY RAND() function?以获取替代方案。