如何通过MYSQL上的数据透视表从table1中选择一个随机行

时间:2016-05-15 00:08:56

标签: mysql sql database

我在数据库中有三个表:一个是用户,第二个是问题,另一个是名为users_questions的数据透视表。关键是不应再向用户询问之前向用户询问的问题。所以我用question_id和user_id在数据透视表中插入一行。如何编写SQL语句以从表中获取行的id与表users_questions中的question_id不匹配的问题中的这样一个随机行,并且表users_questions中该行的user_id与当前签名的不匹配 - 在用户的ID中,是吗?

我尝试了LEFT JOIN,但是它将之前插入的问题提取到当前登录用户的表users_questions中。我试过的陈述如下:

SELECT * FROM questions LEFT JOIN users_questions ON questions.id != users_questions.question_id AND users_questions.user_id != 'some_id' ORDER BY RAND() LIMIT 1;

SELECT * FROM questions, users_questions WHERE questions.id != users_questions.question_id AND users_questions.user_id != 'some_id' ORDER BY RAND() LIMIT 1;

感谢。

1 个答案:

答案 0 :(得分:0)

您可以对user_question的问题执行LEFT JOIN并查找空值

SELECT * FROM questions
    LEFT JOIN users_questions ON questions.id = users_questions.question_id AND
              users_questions.user_id = 'some_id'
 WHERE user_questions.questions_id IS NULL
 ORDER BY RAND() LIMIT 1

在将ORDER BY RAND()和LIMIT放入。

之前检查是否给出了正确的列表