我有一个设置了以下字段的视点表: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