0

我有三个具有主键和引用的表。我需要以下面的方式选择行。请任何人帮助我。

表:( ClassId -> primarykey)

ClassId  ClassTitle
--------------------
1        First  
2        Second
3        Third

表:部门( DeptId -> primarykey)

DeptId   DeptName
-------------------
1        science
2        maths
3        general knowledge

表:ClassAndDepartment

ClassId  DeptId(ClassId-> foreign key of class and DeptId->foreign key of Department)
1        1
1        2
2        1
2        3

现在我需要选择值存在于表中Class但不存在于表中的行ClassAndDepartment

4

3 回答 3

3
select * from Class c where ClassId not in (select distinct ClassId from ClassAndDepartment)
于 2012-10-19T10:33:19.887 回答
1
select * 
from class c 
where classid not in (select classid from classanddepartment)
于 2012-10-19T10:35:21.097 回答
0

解决此问题的另一种方法是使用 aLEFT JOIN而不是NOT IN

SELECT *
FROM Class C
LEFT JOIN ClassAndDepartment CandD ON C.ClassId = CandD.ClassId
WHERE CandD.DeptId IS NULL

避免NOT IN通常会提高性能。

于 2014-05-02T15:59:47.263 回答