Как получить отчетливый результат, но вернуть еще один столбец в select? - PullRequest
2 голосов
/ 08 января 2010

Я хочу получить отчетливый результат, основанный на свойстве, но вернуть идентификатор в 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 . Можно ли это сделать?

(таблица Article содержит дубликаты, поэтому я просто хочу вернуть любой из них, это не имеет значения, если только body = "").

Ответы [ 2 ]

2 голосов
/ 08 января 2010

Если вам все равно, какая строка возвращается, вы можете изменить свой подзапрос на:

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

Это вернет самое низкое значение id из article, где body соответствует.

2 голосов
/ 08 января 2010

что это за SQL-сервер?

Вместо использования различных вы можете запросить только одну строку для возврата, а затем вам нужно будет выбрать только те поля, которые вам действительно нужны.

В PL \ SQL (Oracle) вы можете использовать rownum:

where rownum = 1

В другом SQL вы можете использовать предел:

Limit 1

читать: http://www.petefreitag.com/item/451.cfm

...