部門
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查詢將返回所有部門*,除非*部門不包含任何人*但*約翰。 –