2010-01-08 4 views
2

속성을 기반으로 별개의 결과를 얻고 싶지만 하위 쿼리에서 사용할 것이기 때문에 select에 id를 반환하십시오.뚜렷한 결과를 얻지 만 select에서 다른 열을 반환하는 방법은 무엇입니까?

(List<Article>) session.createQuery("from Article a where a.id in (select distinct a2.title from article a2 where a2.body = :body"); 
setString("body", "") 
.list(); 

의 핵심 부분

, 나는 아이디가 아닌 a2.title 재산을 반환 할 하위 쿼리입니다. 이 작업을 수행 할 수 있습니까?

(표의 기사에는 중복 된 항목이 있으므로 본문 중 하나만 반환하려면 본문 = ""인 경우 중요하지 않음).

+1

아, 47 %! –

+1

진심으로,이 녀석이 날 미워하고있어. – delfuego

+0

최대 절전 모드가 나를 미치게합니다! – mrblah

답변

2

:

Limit 1 

읽기 : 당신이 한계를 사용할 수있는 다른 SQL에서

where rownum = 1 

을 어떤 행이 반환되는지 알아 보려면 하위 쿼리를 다음으로 바꿀 수 있습니다.

select MIN(a2.id) from article a2 where a2.body = :body 

에서 가장 낮은 id을 반환합니다. 여기에서 body은 일치합니다.

+0

MIN (a2.id)이 맞습니까? – mrblah

+0

@mrblah : 예, 'MIN (a2.id)' –

2

어떤 SQL 서버입니까?

별명을 사용하는 대신 반환 할 한 줄만 입력하면 실제로 필요한 필드 만 선택하면됩니다.

PL \ SQL (오라클)에서

당신이 ROWNUM 사용할 수 있습니다 그렇지 않으면 http://www.petefreitag.com/item/451.cfm

+0

sql server 2008 express – mrblah

+0

그런 다음 내부 쿼리에서 "LIMIT 1"을 사용해보십시오. – rmn

+1

"LIMIT"는 tsql에서 작동하지만 "SELECT TOP 1 * FROM table"에서는 작동하지 않습니다. – wprl