我有一個設置了以下字段的視點表:MySQL查詢不返回所有結果
paymentID,作業ID,jobnumber可以,jobType,countType,countID,銷售代表,dealershipName,checkTS,paymentAmount,estimatedMailArrival
當checkTS落在某個日期範圍之間時,我需要選擇這些字段。 (checkTS是日期時間字段)。在這些字段之上,我需要從另一個名爲jobtasks的表中選擇兩個時間戳(它們可能存在也可能不存在,所以我將使用左連接)。要做到這一點,我已經建立了下面的查詢:
SELECT
s.jobID, s.jobNumber, s.jobType, s.countType, s.countID, s.salesRep, s.dealershipName, s.checkTS, s.paymentID, s.paymentAmount, s.estimatedMailArrival,
jt1.completedTimestamp as Art,
jt2.completedTimestamp as List
FROM salesboard s
LEFT JOIN jobtasks jt1 ON s.jobID = jt1.jobID
LEFT JOIN jobtasks jt2 ON s.jobID = jt2.jobID
WHERE
s.checkTS BETWEEN '2013-03-01 00:00:00' AND '2013-03-31 23:59:59' AND
jt1.taskID = 22 AND
jt2.taskID = 23
ORDER BY s.checkTS DESC;
查詢不返回任何錯誤,但我發現它不拉的所有記錄(它拉242的182,應該是拉)。我可以手動進入數據庫(mysql)並查看應該被拖動但不是的記錄。一個例子 - 「2013-03-04 10:11:00」的時間戳沒有被拉。
如果我刪除所有的藝術和列表的東西,我得到的結果的正確數量... 242
SELECT
s.jobID, s.jobNumber, s.jobType, s.countType, s.countID, s.salesRep, s.dealershipName, s.checkTS, s.paymentID, s.paymentAmount, s.estimatedMailArrival
FROM salesboard s
WHERE
s.checkTS BETWEEN '2013-03-01 00:00:00' AND '2013-03-31 23:59:59'
ORDER BY s.checkTS DESC;
爲什麼一些記錄不會,如果我使用一個左連接返回?
不,它仍然返回182個結果:( – Brds
你能告訴我更新的查詢在你的問題還有,以防萬一? ,你做了'= NULL'而不是'IS NULL'嗎?'IS'是必需的。 – MichaelRushton
我只做了你所做的改變 - 是的,我做了「是」而不是「=」。在編輯中,但sgeddes的回答解決了這個問題。感謝您的輸入......很高興知道仍在計數的表格。 – Brds