0

好吧伙计们,我在 MySQL 方面不是很好,但我可以做基础知识......所以现在我需要一些帮助。我有两个表 - 问题(存储一些问题和可用答案)和日志(存储先前回答问题的日志)

问题-

questionId,     question,                answer1...balbalba
1              'question balba'         'Avaliable answer1'
2              'question2 blaba'        'Other answer'

日志-

id, questionId, userId
1   1           123456  

这里存储的是在1userId上回答的questionId

所以我需要一个查询,从“问题”中找到用户“123456”没有得到回答的随机问题。我希望你能帮助我...

4

1 回答 1

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(). 如果您有很多问题,请查看问题如何优化 MySQL 的 ORDER BY RAND() 函数?为替代品。

于 2013-03-25T19:57:50.330 回答