显示一个随机的mysql行,但两次不一样

时间:2014-05-03 21:38:02

标签: php mysql sql

我正在尝试创建一个数据库,其中包含我的所有信息,包括问题,用户,答案等。

我一整天都在想如何解决我的这个问题。哦,问题是这样的: 让我们说我的数据库中有一个表,有问题(300 ++),登录的用户会得到一个随机问题。但是从来没有再问过同样的问题,所以我需要将这些信息存储在一个带有用户ID和问题ID的单独表中。我还需要创建另一个表来存储问题的答案。

那么这个PHP / MYSQL代码怎么样?因为我需要找一个尚未向同一用户显示的随机问题。

如果不清楚,请告诉我。并提前感谢

2 个答案:

答案 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;