mysql - En 询问的头脑想知道

标签 mysql join compare

我正在尝试比较一个包含超过 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 的唯一键。

一如既往地感谢您的帮助, 蒂姆

最佳答案

很难理解您想从 Techs 表中返回什么,因为您不希望 TechNum 存在于 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 表中不存在 technum 的所有记录。所以 technum、firstname、lastname 和 job 字段都将为 NULL

关于mysql - En 询问的头脑想知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904052/

相关文章:

Python以最有效的方法比较两组大量数据

php - 如何使用 php 和 html 将 csv 表导入 mysql 数据库

mysql - 如何将变量传递到子查询中?

mysql - 创建 2 个表的 View 查询(使用 3 个表中的数据)

mysql - 返回表中某一列中的值多次出现的行

java - 如何解析一个字符串与另一个字符串的比较?

c# - 规范化两个字符串然后比较

python - MySQL - 即使包含整数也返回 NULL

php - 从指定刚刚注册的用户获取数据

mysql - 选择包含在另一个表的集合中的行