检查SQL数据库中不存在的值

时间:2014-02-28 13:40:59

标签: php mysql sql

我对MySQL表有疑问 我有2个表(用户(user_id和其他行)和答案(id,answer_id和user_id))

我想检查一下,用户没有回答哪些问题(例如,在答案表中存在5行 - 4,6,8,1,3(但问题是10),我想退出从数据库值2,5,7,9,10)。

如何编写这样的查询? 我尝试过JOIN,但一切都没有成功!

4 个答案:

答案 0 :(得分:5)

假设您有问题和答案表,这是标准的TSQL解决方案:

SELECT Q.QUESTION_ID 
FROM   QUESTIONS Q LEFT JOIN ANSWERS A ON Q.QUESTION_ID = A.QUESTION_ID 
WHERE  A.QUESTION_ID IS NULL 

答案 1 :(得分:3)

我想你有一张QUESTION表:

select *
from question
where not exists(
    select 'x'
    from answer
    where answer.question_id = question.id
)

如果你没有QUESTION表,恕我直言就没有解决方案

答案 2 :(得分:3)

不是坐在mySQL数据库的前面,但它应该是某种意义上的(你没有告诉我们你的问题在哪里列出,所以我放了一个占位符)看起来你的答案表似乎还有应该有一个指向它正在回答的question_id的链接。如果我做了任何不正确的假设,请告诉我,我会根据需要进行编辑。

Select question_id from question_table 
where question_id not in (select question_id from answers)

答案 3 :(得分:3)

或者使用LEFT JOIN,它更快。

SELECT q.id
  FROM question q
  LEFT JOIN answers a
    ON a.question_id = q.id
  WHERE a.id IS NULL