2013-11-25 154 views
1

我每次嘗試運行子查詢時都會收到HQL錯誤。這種類型的查詢應該在SQL中正確工作? HQL如何以不同的方式處理這種類型的查詢?HQL子查詢問題

SELECT * 
FROM Table 
WHERE user_Id IN (
    SELECT a.user_Id 
    FROM Table a 
    WHERE a.color='Blue') 

看起來HQL不支持IN? 我收到錯誤消息:「無法識別'SELECT'附近的輸入」

回答

0

看起來您的語法不正確。如果你想選擇所有字段

SELECT * 
FROM Table 
WHERE user_Id IN (
    SELECT a.user_Id 
    FROM Table a 
    WHERE a.color='Blue') 
+1

這裏有什麼區別?我可能是錯的(經常是),但我看不出有什麼不同。 – XN16

+0

OP有「FROM a.Table」(在OP編輯問題之前)...表別名的正確語法是「FROM Table a」,現在問題中。所以,沒有區別! – BWS

+0

那就解釋一下吧! – XN16

1

在HQL,你有兩種方法:試試這個

1,您可以刪除SELECT子句,如:

FROM Table 
WHERE user_Id IN (
    SELECT a.user_Id 
    FROM Table a 
    WHERE a.color='Blue') 

2 - 如果要使用select子句,則必須使用別名:

SELECT t 
FROM Table t 
WHERE t.user_Id IN (
    SELECT a.user_Id 
    FROM Table a 
WHERE a.color='Blue')