Sql 不在子查询中,不返回任何结果

Sql 不在子查询中,不返回任何结果,sql,oracle,subquery,Sql,Oracle,Subquery,我试图得到一份从未教过课程部分的讲师名单 我首先选择了一个教授课程的人,然后得到了一大堆结果 SELECT w.COURSE_NO,z.SALUTATION, z.FIRST_NAME, z.LAST_NAME,z.ZIP FROM INSTRUCTOR z , SECTION w WHERE z.INSTRUCTOR_ID = w.INSTRUCTOR_ID; 但当我不在,以便我可以看到什么教练从来没有教过的课程部分,它给我没有行 SELECT a.SALUTATION, a.FIRST_N

我试图得到一份从未教过课程部分的讲师名单

我首先选择了一个教授课程的人,然后得到了一大堆结果

SELECT w.COURSE_NO,z.SALUTATION, z.FIRST_NAME, z.LAST_NAME,z.ZIP
FROM INSTRUCTOR z , SECTION w
WHERE z.INSTRUCTOR_ID = w.INSTRUCTOR_ID;
但当我不在,以便我可以看到什么教练从来没有教过的课程部分,它给我没有行

SELECT a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP
FROM INSTRUCTOR a,SECTION b 
WHERE a.INSTRUCTOR_ID = b.INSTRUCTOR_ID AND b.COURSE_NO NOT IN
(SELECT w.COURSE_NO
FROM INSTRUCTOR z , SECTION w
WHERE z.INSTRUCTOR_ID = w.INSTRUCTOR_ID)
ORDER BY a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP;

为什么当我试图选择那些从未在课程部分中出现过的人时,它不给我任何行?

因为您只得到了部分中的行。看起来你想要:

SELECT a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP
FROM INSTRUCTOR a 
WHERE a.INSTRUCTOR_ID NOT IN
(SELECT w.INSTRUCTOR_ID 
FROM SECTION w)
ORDER BY a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP;


检查关于LEFT join它将为您提供0行,因为您的子查询和主查询具有相同的条件和join,这意味着它们返回相同的结果。您的查询将成为select*from a,其中id不在select id from a中。你的查询不正确。您可以发布原始结果和预期结果的示例数据吗?应该是讲师不在“选择讲师…”中的位置,子查询将返回已教授某个部分的讲师列表。@Ben感谢您的解释。这是有道理的,现在我选择的是课程号,而不是讲师:……我只是完全变迟钝了……谢谢!
SELECT a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP
FROM INSTRUCTOR a 
LEFT JOIN SECTION w ON a.INSTRUCTOR_ID = w.INSTRUCTOR_ID
WHERE w.INSTRUCTOR_ID IS NULL
ORDER BY a.SALUTATION, a.FIRST_NAME, a.LAST_NAME,a.ZIP;