Sql 列出条件中不存在的所有

Sql 列出条件中不存在的所有,sql,Sql,所以我必须列出那些从未执导过美国电影的导演 “派拉蒙图片” 桌子是空的 Movieinfomvid、片名、评级、年份、长度、工作室 directinfomvid,directorID select distinct directorID from movieinfo natural join directinfo where studio <> 'Paramount Picture'; 不起作用,因为它显示的是与派拉蒙合作拍摄电影的导演,然后是没有派拉蒙的导演。所以我试着使用exi

所以我必须列出那些从未执导过美国电影的导演 “派拉蒙图片”

桌子是空的 Movieinfomvid、片名、评级、年份、长度、工作室 directinfomvid,directorID

select distinct directorID
from movieinfo natural join directinfo
where studio <> 'Paramount Picture';
不起作用,因为它显示的是与派拉蒙合作拍摄电影的导演,然后是没有派拉蒙的导演。所以我试着使用exists,notexists,in,notin,但我一直在找以前与派拉蒙合作过的董事


如果有任何帮助,我们将不胜感激。

所有这些回答的可能副本都给出了错误的答案,然后就消失了。这里的所有答案都与前一个答案相同。是的,所有答案都是错误的:因为你解释得不好。你们最好的方法是给出样品记录和你们想要的结果。试试看:谢谢你的回答,但是我对“d”和“m”的位置感到困惑,这些快捷方式是说directinfo和movieinfo吗?@Ryan是的。它们是别名,我试图以完整的形式写出来,但在oracle中会出错SQL@Ryan请你像以前一样加上别名,这样引用这个答案会更好一些。这显示了所有在派拉蒙以外拍过电影的导演,但也不排除那些曾在派拉蒙制作过电影的导演。列出从未执导过《派拉蒙电影》的导演名单。这是什么意思?我看错了吗?你选择了派拉蒙以外的所有电影,因此寻找从未在派拉蒙以外执导过的导演。这个查询也会非常慢,因为数据库必须根据directorinfo的每个条目管理派拉蒙以外的电影列表。
select distinct d.directorID
from directinfo as d
where d.directorId not in
                  (select distinct d1.directorId 
                  from movieinfo as m
                  inner join directinfo as d1 on d1.mvid = m.mvid
                  where m.studio =  'Paramount Picture');
 select distinct directorid from 
  directorinfo where 
  mvid not in 
( select mvid from movieinfo where studio<>'paramount')