我正在尝试创建一个数据库,其中包含我的所有信息,包括问题,用户,答案等。
我一整天都在想如何解决我的这个问题。哦,问题是这样的: 让我们说我的数据库中有一个表,有问题(300 ++),登录的用户会得到一个随机问题。但是从来没有再问过同样的问题,所以我需要将这些信息存储在一个带有用户ID和问题ID的单独表中。我还需要创建另一个表来存储问题的答案。
那么这个PHP / MYSQL代码怎么样?因为我需要找一个尚未向同一用户显示的随机问题。
如果不清楚,请告诉我。并提前感谢
答案 0 :(得分:1)
您可以使用RAND()
功能和NOT IN
示例:
SELECT * FROM `questions` WHERE id NOT IN (5, 3) ORDER BY RAND() LIMIT 1;
您必须使用子查询
获取问题ID实施例
SELECT * FROM `questions` WHERE id NOT IN (SELECT question_id FROM shown_questions WHERE user_id=1) ORDER BY RAND() LIMIT 1;
答案 1 :(得分:1)
您可以使用外部联接来选择尚未使用的项目。如果设置索引,它可能比NOT IN快一点:
SELECT questions.* FROM questions
LEFT JOIN shown_questions
ON (questions.id=show_questions.question AND user_id=42)
WHERE shown_questions.question IS NULL
ORDER BY RAND() LIMIT 1;