JPQL 查询导致 ORA-00907:缺少右括号。怎么修?

JPQL query causing ORA-00907: missing right parenthesis. How to fix?

我正在尝试 运行 以下查询,使用 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: missing right parenthesis"。显然,这不是因为缺少右括号。我知道这个错误有时是由一个bug引起的(http://www.dba-oracle.com/sf_ora_00907_missing_right_parenthesis.htm),但是我的Oracle版本是在修复了这个bug之后。

关于我可能做错了什么的想法?

谢谢!

编辑:我知道这个查询是多余的,但是我特别需要测试一个我在运行时间动态修改子查询的功能,上面是编写只是为了以最简单的方式测试此功能,即使它不会增加表现力。

Oracle 解析器会针对任意数量的语法错误产生此特定错误 - 这并不真正意味着您缺少正确的括号,而是它不是解析器期望的位置。

在这种情况下,错误是因为子查询中的ORDER BY。在 IN 子查询中使用 ORDER BY 子句是没有意义的,解析器不允许。

如果您的目的是对结果进行排序,那么您希望 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

但是根据您解释目的的评论,您需要使用不同的查询表单来完成您的测试。