2013-08-19 77 views
0

可以将一个select的结果用作另一个select语句的表(换句话说:upper)选择语句。有相当于JPQLjpql select into select

这里是我的示例SQL语句

SELECT X.NAME, SLS.TOTAL AS BENEFIT 
(SELECT * FROM PERSON) X 
INNER JOIN SALESMAN SLS ON SLS.PERSON_ID = X.ID 

什么equivalant这种说法在JPQL?

+0

为什么你需要嵌套的'SELECT *'? - 它会杀死的性能。您可以通过'SELECT X.NAME,SLS.TOTAL AS BENEFIT更有效地获得相同的结果 FROM PERSON X INNER JOIN SALESMAN SLS ON SLS.PERSON_ID = X.ID' –

+0

如果您还没有阅读,请看看[http://openjpa.apache.org/builds/1.2.3/apache-openjpa/docs/jpa_langref.html#jpa_langref_subqueries] –

+0

SELECT X.NAME,SLS.TOTAL AS BENEFIT FROM PERSON INNER JOIN SALESMAN SLS ON SLS.PERSON_ID = PERSON.ID 它重复的结果,所以我使用嵌套选择 – user2648768

回答

0

不,这是不可能的。子查询只能在WHERE和HAVING子句中使用,如JPA 2.0规范中所述:

子查询可以用在WHERE或HAVING子句中。
...
[58]子查询仅限于此发行版中的WHERE和HAVING子句。对于FROM子句中的子查询的支持将在本说明书以后的版本被认为是 。

另外在JPA 2.1中,这一点没有改变。