首页 > 解决方案 > SQL 通过查询外键来查找表条目

问题描述

我有4个表如下:

  1. 公司:companyid, name
  2. 员工:employeeid、name、companyid
  3. 工作:jobid, title, companyid
  4. LinkEmpolyee职位:employeeid, jobid

我想识别无效条目LinkEmpolyeeJob员工和工作来自不同公司的表中识别无效条目。

我想避免像下面这样的查询,因为它太慢了:

select * 
from LinkEmpolyeeJob 
where (employeeid, jobid) not in (select a.employeeid, b.jobid 
                                  from Employees a, Jobs b 
                                  where a.companyid = b.companyid);

有人帮忙吗?谢谢!

标签: sql

解决方案


尝试使用joins:

select e.*, j.*
from LinkEmpolyeeJob lej join
     Employees e
     on lej.employeeid = e.employeeid join
     Jobs j
     on lej.jobid = j.jobid
where e.companyid <> j.companyid

推荐阅读