我有一个查询来获取当天运行的一组测验。我想确保用户尚未完成测验。查询我的是:MySQL查询在查询连接表时返回没有结果
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
办理登机手续时我的测验没有退回?这似乎是完全有效的,它不等于一个,因为它是NULL
。
等同于NULL可以给不同的逻辑结果,根据设置...使无论它的工作的设置,请尝试更改该行以“AND(qo.qoIsCompleted IS NOT NULL和qo.qoIsCompleted!= 1 )' –