SQL在两个表

时间:2016-07-07 23:50:39

标签: sql join match

我有两个表,我试图从table1返回一个与table2中的特定值不匹配的记录。我想知道table1中的每个人都没有参加table2中的特定课程。对于这个例子,我想知道所有没有参加过课程A的人。结果应该是ID 3和5.感谢提前。

Table1  
ID  Name
1   John
2   Jane
3   Joe
4   Jack
5   Jill

Table2  
ID  Class
1   A
1   B
3   D
2   A
4   A
5   D

2 个答案:

答案 0 :(得分:2)

您还可以使用LEFT JOIN。下面的查询将为您提供所需的答案:

SELECT t1.Id 
FROM Table1 t1
LEFT JOIN Table2 t2
    ON t1.Id = t2.Id AND t2.Class = 'A'
WHERE t2.Id IS NULL

<强>演示:

SQLFiddle

答案 1 :(得分:1)

脑海中浮现出

NOT IN

select t.*
from table1 t1
where t1.id not in (select t2.id from table2 t2 where t2.class = 'A');

实际上,我更喜欢not exists

select t.*
from table1 t1
where not exists (select t2.id from table2 t2 where t2.class = 'A' and t2.id = t1.id);

您还可以使用left join