2

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

原表:

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

想要的结果,如果我在 City 上做不同的事情:

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

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

4

2 回答 2

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]
于 2010-04-27T19:14:31.960 回答
0

不知道关于 JPQL,但 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
于 2010-04-27T18:09:58.287 回答