HQL选择Row出现多次的位置

时间:2015-08-26 07:50:22

标签: hibernate hql

我正在尝试返回两列值出现多次的行。请注意,这不是优先事项。例如,在表格中..

ID    Name    Country
1     Dave    UK
2     Jim     UK
3     Dave    UK
4     Dave    US
5     Jim     US

然后它会返回第1行和第3行,但不会返回第1行和第3行。这是因为" Dave"和"英国"仅出现在那些行中。我正在努力实现一个HQL查询来获取它。为了实现目标,我尝试将名称分组:

from Runner r group by r.name having count(r.name) > 1

但我收到以下例外:

Column "RUNNER0_.ID" must be in the GROUP BY list;

我读到了为什么这在逻辑上是必要的,所以现在我不知道我将如何实现这个功能。

我使用的是Grails 2.4.4,JDK 7,Hibernate 4.3.6.1

1 个答案:

答案 0 :(得分:1)

您可以尝试使用带有子查询的exists搜索重复项。

select r 
from Runner r 
where exists
(
    select rn
    from Runner rn
    where rn.id <> r.id 
    and rn.name = r.name
    and rn.country = r.country
)