SQL查询以查找不存在主键的位置

Chi*_*hin 0 sql t-sql sql-server sql-server-2005

为表格添加了一个外键关系,我不得不放弃检查创建数据.我假设一些父(公司)对象已被删除,我想找到孤立(分区)记录.如何找到主表中不存在外键的行?

这就是我的想法,但我正在努力使用where子句.

               SELECT  tb_Division.DivisionName, 
                           tb_Division.DivisionCompanyID
                 FROM  tb_Division 
LEFT OUTER JOIN tb_Company ON tb_Division.DivisionCompanyID = tb_Company.CompanyID 
               WHERE (tb_Company.CompanyID = NULL 
                           OR 'doesn't exist in tb_Company')
Run Code Online (Sandbox Code Playgroud)

任何指针都非常赞赏.

Bil*_*win 6

你几乎得到它,但你需要使用IS NULL谓词进行比较:

SELECT  d.DivisionName, d.DivisionCompanyID
FROM  tb_Division d LEFT OUTER JOIN tb_Company c 
  ON d.DivisionCompanyID = c.CompanyID 
WHERE c.CompanyID IS NULL
Run Code Online (Sandbox Code Playgroud)

或者你可以用这种方式写它,它会做同样的事情,也许它更直观:

SELECT  d.DivisionName, d.DivisionCompanyID
FROM  tb_Division d
WHERE NOT EXISTS (SELECT * FROM tb_Company c WHERE d.DivisionCompanyID = c.CompanyID);
Run Code Online (Sandbox Code Playgroud)