联合后sql命令的标识符顺序无效
我试图找到一个类似的问题,但我找不到。我们只是尝试用一个联合进行一个简单的查询,最后一行出现了“无效标识符”错误。有人知道如何组织括号使其有效吗?我们已经尝试了很多方法联合后sql命令的标识符顺序无效,sql,oracle,Sql,Oracle,我试图找到一个类似的问题,但我找不到。我们只是尝试用一个联合进行一个简单的查询,最后一行出现了“无效标识符”错误。有人知道如何组织括号使其有效吗?我们已经尝试了很多方法 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 (*) UNIO
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门的课程,以及所有的空课
您正在选择E.CID
然后,您将使用另一个查询创建一个union,您将在其中选择C.CID
在ORDERBY子句中,有一个列名为CID而不是E.CID的结果
除此之外,如下文所述,关于group by条款中的E.CID列:
E.CID在最后一行的级别不存在。它只存在于第一个查询的范围中的第1-5行
今天的提示:始终使用现代的显式连接语法。更容易编写而不出错,更容易阅读和维护,如果需要,更容易转换为外部联接!无需执行SELECT DISTINCT,因为您的分组将消除所有重复项。无需执行SELECT DISTINCT,因为UNION消除了所有重复项。添加说明:E.CID在最后一行的级别不存在。它确实存在于第一个查询的范围内,仅在第1-5行。很好+1Hi@DevonF,这个回答对你有帮助吗?如果是,请投票。答案是正确的,它修复了你的错误,我相信它是正确的。然后你可以接受正确的答案并放弃投票。干杯
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;