我正在尝试使用Oracle 10运行以下查询:
select intel from Intel intel where intel in (select intel from Intel intel where intel.city.name = 'Rome' order by intel.city.name asc)
但是,我得到" ORA-00907:错过右括号"。显然,这不是因为缺少正确的parens。我知道这个错误有时是由一个错误引起的(http://www.dba-oracle.com/sf_ora_00907_missing_right_parenthesis.htm),但我的Oracle版本是在修补了错误之后。
关于我可能做错什么的任何想法?
谢谢!
编辑:我知道查询是多余的,但我特别需要测试我在运行时动态修改子查询的功能,上面的内容只是为了以最简单的方式测试此功能可能,即使它没有增加表现力。
答案 0 :(得分:1)
Oracle解析器会针对任何数量的语法错误产生此特定错误 - 它并不意味着您缺少正确的括号,但它并不是解析器所期望的。
在这种情况下,错误是由于子查询中的ORDER BY
。在ORDER BY
子查询中有一个IN
子句是没有意义的,并且解析器不允许它。
如果您的目的是对结果进行排序,那么您希望子查询之外的ORDER BY
:
select intel from Intel intel where intel in (select intel from Intel intel where intel.city.name = 'Rome') order by intel.city.name asc
但根据您的评论说明目的,您需要使用不同的查询表单来完成测试。