使用JOIN过滤结果

时间:2014-10-08 05:03:05

标签: mysql join

我有一个名为问题的页面,其中用户被问到问题,他/她可以选择回答问题。这些问题来自一个名为问题的表格。当问题得到解答时,我的数据库中名为 answers_questions 的表会记录所回答问题的ID以及回答问题的用户的ID。这样做的目的是在用户再次访问页面时隐藏已回答的问题。

在页面加载时,我尝试加入这两个表格,看看两个表格中是否存在 question_id ,其中 userID 是登录用户的 userID 。如果两个表中都存在id,那么它不应该使用<> 显示结果。 问题是我尝试以下查询时每次迭代多次循环:

SELECT questions.question_id, questions.user_id
FROM `questions`
JOIN `answered_questions`
ON questions.question_id <> answered_questions.question_id
WHERE answered_questions.user_id = ".$userID." 

但是当我使用这个

时它工作正常
SELECT questions.question_id, questions.user_id
FROM `questions`
JOIN `answered_questions`
ON questions.question_id **=** answered_questions.question_id
WHERE answered_questions.user_id = ".$userID." 

我觉得我对这一切的逻辑做错了。任何帮助或线索都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

要获得未回答的问题您可以使用LEFT JOIN

SELECT questions.question_id, questions.user_id
FROM questions
LEFT JOIN answered_questions
  ON answered_questions.question_id = questions.question_id
  AND answered_questions.user_id = ".$userID."
WHERE answered_questions.question_id IS NULL