Orm JPQL/SQL:如何从一个列上有GROUPBY的表中选择*?

Orm JPQL/SQL:如何从一个列上有GROUPBY的表中选择*?,orm,jpa,limit,distinct,jpql,Orm,Jpa,Limit,Distinct,Jpql,我希望选择表中的每一列,但希望在我的行的单个属性上有不同的值(示例中的城市)。我不需要像计数之类的额外列,只需要有限数量的结果,而且似乎不可能在JPQL查询中直接限制结果 原始表格: ID | Name | City --------------------------- 1 | John | NY 2 | Maria | LA 3 | John | LA 4 | Albert | NY 想要得到的结果

我希望选择表中的每一列,但希望在我的行的单个属性上有不同的值(示例中的城市)。我不需要像计数之类的额外列,只需要有限数量的结果,而且似乎不可能在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

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

不知道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

在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]

约翰和艾伯特都在纽约。对于结果中的单个NY行,您不在乎返回哪一行吗?关于洛杉矶也有一个类似的问题。事实上,我想要最便宜的。我只需将“select*”替换为“select*”即可使其正常工作。非常感谢!