JPQL / SQL:如何从一列中的group by中选择*?

时间:2010-04-27 18:04:28

标签: orm jpa limit distinct jpql

我想选择表的每一列,但希望在我的行的单个属性上有不同的值(示例中为City)。我不想要额外的列,如计数或任何东西,只是有限数量的结果,似乎不可能直接LIMIT结果在JPQL查询。

原始表:

ID    |   Name   |   City
---------------------------
1     |   John   |   NY
2     |   Maria  |   LA
3     |   John   |   LA
4     |   Albert |   NY

想要的结果,如果我在城市做了明显的:

ID    |   Name   |   City
---------------------------
1     |   John   |   NY
2     |   Maria  |   LA

最好的方法是什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

在JPQL中,您可以这样做:

select e 
from MyEntity e 
where e.id in (select min(e.id) from MyEntity e group by e.city) 

返回:

MyEntity [id=1, name=John, city=NY]
MyEntity [id=2, name=Maria, city=LA]

答案 1 :(得分:0)

关于JPQL的Dunno,但SQL将是:

SELECT x.*
  FROM TABLE x
  JOIN (SELECT MIN(t.id) AS min_id,
               t.city
          FROM TABLE t
      GROUP BY t.city) y ON y.min_id = x.id
                        AND y.city = x.city