部门
id departmentname
1 x
2 y
3 z
员工
fkdepartmentid empname
1 john
1 sam
2 ram
3 hari
在这里,人们可以empname
属于任意数量的department
秒。
我的要求是从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.我该如何实现这些结果?
我想你可能会问错了问题的数据库。在'员工'表中,每个部门都有一个“非约翰”员工,因此,将您的需求逐字地转换为SQL查询将返回所有部门*,除非*部门不包含任何人*但*约翰。 –