我有一個查詢來獲取當天運行的一組測驗。我想確保用戶尚未完成測驗。查詢我的是: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 )' –