如何获得不同的结果,但在select中返回另一列?

时间:2010-01-08 16:02:09

标签: java hibernate hql subquery

我希望基于属性获得不同的结果,但是在select中返回id,因为我将在子查询中使用它。

e.g。

(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();

关键部分是子查询,我想返回id,而不是a2.title属性。 可以这样做吗?

(表格文章有重复,所以我只想返回其中任何一个,只要body =“”就没关系。

2 个答案:

答案 0 :(得分:2)

这是什么SQL服务器?

除了使用distinct之外,你可以只要求返回一行,然后你只需要选择你真正需要的字段。

在PL \ SQL(Oracle)中,您可以使用rownum:

where rownum = 1

在其他SQL中,您可以使用限制:

Limit 1

阅读:http://www.petefreitag.com/item/451.cfm

答案 1 :(得分:2)

如果您不关心返回哪一行,可以将子查询更改为:

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

这将返回idarticle匹配的最低body