我试图比较一个超过300,000行的庞大表和一个小得多的表来查看数据是否在大数据中而不是在小数据库中。这是我的基本想法:
代码:
select TOAWorkOrdersNew.TechNum AS TOATechNum,
TOAWorkOrdersNew.FirstName AS TOAFirst,
TOAWorkOrdersNew.LastName AS TOALast,
TOAWorkOrdersNew.Title AS TOATitle,
TOAWorkOrdersNew.WorkDate AS TOAWorkDate,
Techs.TechNum AS TechNum,
Techs.FirstName AS FirstName,
Techs.LastName AS LastName,
Techs.JobDesc AS Job
from TOAWorkOrdersNew, Techs
where
!!!!! TOAWorkOrdersNew.WorkDate between '2013-05-15' and '2013-05-31' AND
TOAWorkOrdersNew.TechNum ***IS NOT FOUND INSIDE*** Techs.TechNum !!!
Techs.TechNum是Techs的独特关键。
一如既往地感谢您的帮助, 添
答案 0 :(得分:0)
如果我正确地理解你......
使用左连接:
SELECT TOAWorkOrdersNew.TechNum AS TOATechNum,
TOAWorkOrdersNew.FirstName AS TOAFirst,
TOAWorkOrdersNew.LastName AS TOALast,
TOAWorkOrdersNew.Title AS TOATitle,
TOAWorkOrdersNew.WorkDate AS TOAWorkDate,
Techs.TechNum AS TechNum,
Techs.FirstName AS FirstName,
Techs.LastName AS LastName,
Techs.JobDesc AS Job
FROM Techs LEFT JOIN TOAWorkOrdersNew ON TOAWorkOrdersNew.TechNum = Techs.TechNum
AND TOAWorkOrdersNew.WorkDate BETWEEN '2013-05-15' and '2013-05-31'
WHERE TOAWorkOrdersNew.TechNum IS NULL
要查找两个表中的所有ARE,您可以将其更改为内部联接(删除IS NULL语句)或将IS NULL更改为IS NOT NULL。
真的,如果你只想找到其他桌子上没有记录的记录,我会期待以下内容:
SELECT t.firstName, t.lastName, t.jobDesc [job]
FROM Techs t
LEFT JOIN TOAWorkOrdersNew toa ON toa.techNum = t.techNum
AND toa.WorkDate BETWEEN '2013-05-15' and '2013-05-31'
WHERE toa.technum IS NULL
答案 1 :(得分:0)
由于您不希望TechNum存在于Techs表中,因此很难理解您希望从Techs表中返回什么内容。
以下是使用OUTER JOIN
并检查NULL
的一个选项:
select TOAWorkOrdersNew.TechNum AS TOATechNum,
TOAWorkOrdersNew.FirstName AS TOAFirst,
TOAWorkOrdersNew.LastName AS TOALast,
TOAWorkOrdersNew.Title AS TOATitle,
TOAWorkOrdersNew.WorkDate AS TOAWorkDate,
Techs.TechNum AS TechNum,
Techs.FirstName AS FirstName,
Techs.LastName AS LastName,
Techs.JobDesc AS Job
from TOAWorkOrdersNew left join
Techs on TOAWorkOrdersNew.TechNum = Techs.TechNum
where Techs.TechNum is null
and TOAWorkOrdersNew.WorkDate between '2013-05-15' and '2013-05-31'
这将返回来自TOAWorkOrdersNew的所有记录,其中techs表中不存在该技术。因此,技术,名字,姓氏和工作字段都是NULL
。