大家好,我目前正在做一些SQL作业,我正在寻找一个正确的方向推动。我需要显示一个从未在派拉蒙电影公司工作过的导演列表。
select distinct directorID
from movieinfo natural join directinfo
where studio <> 'Paramount Picture';
这既显示了从未这样做过的导演,也显示了为派拉蒙工作过并与他人合作过的导演。
我想也许一个EXISTS子查询会帮助我,但我最终得到了完全相同的结果。
有没有人知道一种方法来检查导演是否曾经与派拉蒙合作过,并将他们从名单上划掉?
编辑* *DirectorID不属于这两个表。directinfo (mvid directorID)电影信息(mvid,标题,分级,年份,长度,工作室)
尝试使用EXISTS
SELECT a.*
FROM directinfo a
WHERE NOT EXISTS
(
SELECT 1
FROM movieinfo b
WHERE a.directorID = b.directorID AND
b.studio <> 'Paramount Picture'
)
假设列studio
属于表movieinfo
,并且两个表都包含directorID
。
LEFT JOIN...IS NULL
,
SELECT a.*
FROM directinfo a
LEFT JOIN movieinfo b
ON a.directorID = b.directorID AND
b.studio <> 'Paramount Picture'
WHERE b.directorID IS NULL
您可以使用如下内容:
SELECT directorID FROM directinfo WHERE directorID NOT IN
(SELECT directorID FROM movieinfo WHERE studio='Paramount Picture');
这将给你所有导演id没有参与派拉蒙电影工作室。
编辑:删除第二个错误的答案