复杂的MySQL选择

时间:2013-03-25 19:41:50

标签: mysql

好的,我在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'未被回答的随机问题。 我希望你帮助我...

1 个答案:

答案 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?以获取替代方案。