sql – 具有内部选择查询错误的Oracle选择查询
我收到SQL错误并尝试解决,任何指针都会有帮助, //这会被执行 SELECT empid FROM employees WHERE deptid IN(10,20,30,40); //这会被执行 SELECT deptid FROM department WHERE description LIKE '%application%' ORDER BY createddate DESC 但以下查询抛出错误: SELECT empid FROM employees WHERE deptid IN (SELECT deptid FROM department WHERE description LIKE '%application%' ORDER BY createddate DESC); 错误: 更新:07/14: 使用@dasblinkenlight中的确切解决方案进行更新:
本文很好地解释了许多概念 – http://oraclequirks.blogspot.com/2008/01/ora-00907-missing-right-parenthesis.html
我尝试使用WHERE子句和’=’而不是’IN’的SQL语句,它仍然抛出错误:’缺少右括号’. 结论1: “不要在WHERE子句子查询中使用ORDER BY” 结论2 本案例研究还显示了我们应该选择JOIN而不是选择子查询的场景 解决方法问题是将ORDER BY放在WHERE子句子查询中. SQL语法不允许您在WHERE子句中对子查询的元素进行排序,因为它不会更改整个查询的结果.您应该将其移出以修复语法: SELECT empid FROM employees WHERE deptid IN ( SELECT deptid FROM department WHERE description LIKE '%application%' ) ORDER BY createddate DESC
然后,您需要加入department表,并在其中一个列上使用ORDER BY: SELECT e.empid FROM employees e JOIN department d ON e.deptid = d.deptid WHERE d.description LIKE '%application%' ORDER BY d.createddate DESC (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |