0

主キーと参照を持つ 3 つのテーブルがあります。以下の方法で行を選択する必要があります。誰か助けてください。

表:クラス( 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

これを解決する別の方法は、 のLEFT JOIN代わりにa を使用することです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 に答える