2010-04-26 8 views
4

를 조회 나는 다음과 같은 SQL 쿼리가 :NHibernate에 HQL 부속 선택은

select c.id 
from (select id from customers) c 

이 쿼리는 실제적인 가치가없는이 -이 게시물의 목적을 위해 대단히 단순화.

내 질문 : HQL을 사용하여 from 절에서 하위 쿼리를 사용할 수 있습니까? 그렇지 않다면 아마도 SQL에서 temp 테이블과 같은 고객을 먼저 쿼리 한 다음 그 결과를 다음 쿼리의 소스로 사용할 수 있습니까?

감사합니다.

답변

7

예, 가능합니다.

쿼리는 위와 같이 HQL 작성 될 수

:이 문제에 대해 자신을 실행했습니다

select Id 
from Customer 
where Id in (select Id from Customer) 
+0

시도했지만 작동하지 않습니다. 그러나 하위 쿼리를 변경하면 제대로 작동합니다. – MegaByte

+0

죄송합니다. 하위 쿼리는 지원하지만 전부는 아닙니다. 나는 내 대답을 바꾸고있다. –

+0

네, 괜찮습니다. 다른 해결책이 있습니까? IN 절이 마음에 들지 않습니다. 고객 테이블에 1000 개의 항목이 있으면 어떻게됩니까? 아마도 메모리 문제가 발생할 것입니다. – MegaByte

3

. hql이 from 절에서 하위 쿼리를 지원하지 않는다는 것을 알기까지 잠시 시간을 보냈습니다.

hql 설명서 here의 14.13 절 참조.