联合后 sql 命令的标识符顺序无效



我试图找到一个类似的问题,但我不能。我们只是尝试使用联合进行简单的查询,并在最后一行收到"无效标识符"错误。有谁知道如何组织括号以使其有效?我们已经尝试了很多方法。

SELECT DISTINCT E.CID
FROM Enrollments E, Students S
WHERE E.SID = S.SID AND (S.Major <> 'CS' OR S.Major IS NULL) 
GROUP BY E.CID
HAVING 10 > COUNT (*)
UNION SELECT DISTINCT C.CID
FROM COURSES C
MINUS 
SELECT DISTINCT E3.CID 
FROM Enrollments E3, Students S2
WHERE E3.SID = S2.SID 
GROUP BY E3.CID
HAVING 0 < COUNT (*)
ORDER BY E.CID DESC;

错误信息:

第 14 行的错误:

ORA-00904:"E"。CID":标识符无效

编辑:只是为了让您知道目的是什么,所有少于10个非CS专业的班级以及所有空课程。

  1. 您正在选择E.CID
  2. 然后,您将
  3. 使用另一个查询创建联合,您将在其中选择C.CID
  4. 在 order by 子句中,您有一个结果,其中列命名为CID而不是E.CID
  5. 补充一点,正如Impelar所写的那样,关于分组 by 子句中的列E.CID

    "E.CID在最后一行的层面上不存在。它仅存在于第一个查询的范围内(第 1-5 行(">

    SELECT DISTINCT E.CID
    FROM Enrollments E, Students S
    WHERE E.SID = S.SID AND (S.Major <> 'CS' OR S.Major IS NULL) 
    HAVING 10 > COUNT (*)              
    GROUP BY E.CID  
    UNION SELECT DISTINCT C.CID
    FROM COURSES C
    MINUS 
    SELECT DISTINCT E3.CID 
    FROM Enrollments E3, Students S2
    WHERE E3.SID = S2.SID 
    GROUP BY E3.CID
    HAVING 0 < COUNT (*)
    ORDER BY CID DESC;
    

这是一个没有错误的演示

最新更新