我有两个表,我试图从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
答案 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
<强>演示:强>
答案 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
。