我有一个查询来获取当天正在运行的一组测验。我想确保用户尚未完成该测验。我的查询是:
SELECT qi.qiId, qi.qiTitle, qi.qiDescription, qi.qiDate, qi.qiLeague, qi.qiType, qi.qiNumQuestions
FROM quizzes qi
LEFT JOIN quizOneDaySpecials qo
ON qo.qoQuizId = qi.qiId
AND qo.qoUserId = 11
WHERE qi.qiLeague = 0
AND qo.qoIsCompleted != 1
AND qi.qiDate BETWEEN 1381878000 AND 1381964399
所有测验的详细信息都在quizzes
表中,如果用户已经开始或完成了测验,那么记录中将存在quizOneDaySpecials
. 但是,如果用户尚未开始测验,则不会出现任何记录quizOneDaySpecials
,这就是我的问题发生的地方。
qo.qoIsCompleted
是NULL
如果用户还没有开始测验,并且每次我运行我的查询我都没有得到任何结果。如果我取出,AND qo.qoIsCompleted != 1
则用户尚未开始的测验将按预期返回。
为什么我在办理登机手续时没有退回我的测验qo.qoIscompleted != 1
?它似乎完全有效,它不等于 1,因为它是NULL
.