找到不等于另一个值的值

  • 本文关键字:另一个 不等于 sql
  • 更新时间 :
  • 英文 :


大家好,我目前正在做一些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没有参与派拉蒙电影工作室。

编辑:删除第二个错误的答案

相关内容

最新更新