例如
部
id departmentname
1 x
2 y
3 z
员工
fkdepartmentid empname
1 john
1 sam
2 ram
3 hari
这里一个empname
可以属于任意数量的department
s。
我的要求是从department
表中获取所有部门empname!=john
(通过连接)。
我尝试了以下查询:
SELECT d.id FROM department d
INNER JOIN employee e ON d.id=e.fkdepartmentid
WHERE((e.empname<>'1')OR d.id IN (SELECT DISTINCT fkdepartmentid FROM employee WHERE fkdepartmentid NOT IN (SELECT DISTINCT fkdepartmentid FROM employee WHERE empname=sam)) ) GROUP BY d.id
但是,查询速度很慢,并且在某些情况下会失败。结果应该是 2 和 3。我怎样才能达到这些结果?