首先 - 已经在这里看过一个类似的问题,但它与我的问题并不完全相关。
其次,这是一个家庭作业,但问题与 SQL 语法有关——我已经编写了查询,结果如预期的那样,只是无序的。
第三,我相信我知道为什么会发生错误 - 子查询(y)(ies)正在影响外部查询的顺序(可能),因此无法根据查询嵌套的方式创建顺序.
这是查询:
SELECT DISTINCT E.ssn, E.lname
FROM employee E, works_on W
WHERE E.ssn = W.essn AND
W.pno NOT IN
(SELECT P.pnumber
FROM project P
WHERE P.plocation = 'Houston')
MINUS
(SELECT E.ssn, E.lname
FROM employee E, works_on W, project P
WHERE E.ssn = W.essn AND
W.pno = P.pnumber AND
P.plocation = 'Houston')
ORDER BY E.lname;
SSN LNAME
--------- ---------------
123456789 Smith
453453453 English
987987987 Jabbar
999887777 Zelaya
现在,如果我ORDER BY E.lname
从查询末尾删除,它运行良好。否则,我会收到“无效标识符”错误。我认为这是因为E.lname
在查询中没有任何意义。
所以我的问题是......我怎样才能以这样的方式“包装”查询(如此处所引用),我可以对结果进行排序E.lname
?
我已经尝试过 9,000 多种方式来包装它,但我还没有找到可行的解决方案。我也是 SQL 的新手,所以我怀疑我是否可以更改查询的结构,以使用比我目前拥有的任何数量少的子查询来给我相同的结果。
感谢任何花时间帮助我的人,非常感谢!如果需要提供建表代码,请告诉我!