具体的问题是列出从未评分的老师的姓名。
我有“教师”表,其中包含“名称”和“ ID”列。
以及带有“ IDTeacher”和“ Grade”列的“成绩”表。
不知道为什么这不起作用:
Select Name from teachers where not exists(Select * from grades, teachers)
您的查询确实有效,只是没有按照您认为的那样工作。子查询在两个表之间创建笛卡尔乘积。如果两个表都具有行,则笛卡尔乘积也具有行,并且该where
子句将始终为true。
您可以采用这种方法,但是您需要一个相关的子查询:
Select Name
from teachers t
where not exists (Select 1 from grades g where g.idteacherid = t.id);
请注意,此查询在子查询中只有一个表。
还有其他方法可以编写此查询,但这似乎是您要使用的方法。而且,这not exists
是一种非常合理的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句