2013-08-19 78 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中,這一點沒有改變。