SQL语句错误

时间:2016-03-20 16:08:52

标签: sql oracle

打印仅在巡航范围超过1000公里的飞机上获得认证的员工姓名。

SELECT E.ename
FROM Employees E, Certified C, Aircraft A
WHERE C.aid = A.aid AND E.eid = C.eid
GROUP BY E.eid, E.ename
HAVING EVERY (A.cruisingrange > 1000)

Oracle缺乏对HAVING EVERY子句的支持会产生错误

ORA-00907: missing right parenthesis

如何解决?

1 个答案:

答案 0 :(得分:5)

而不是每一个,选择最小的一个,并检查它是否大于1000

SELECT E.ename
FROM Employees E
INNER JOIN Certified C ON  E.eid = C.eid
INNER JOIN Aircraft A ON C.aid = A.aid
GROUP BY E.ename
HAVING MIN(A.cruisingrange) > 1000

正如戈登所说,我忘了提及,我将你的连接语法从隐式(逗号分隔)修改为显式连接语法。尽量避免使用隐式连接语法,这会在处理两个以上的表时导致错误。