Orm JPQL/SQL:如何从一个列上有GROUPBY的表中选择*?
我希望选择表中的每一列,但希望在我的行的单个属性上有不同的值(示例中的城市)。我不需要像计数之类的额外列,只需要有限数量的结果,而且似乎不可能在JPQL查询中直接限制结果 原始表格: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 想要得到的结果
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*”即可使其正常工作。非常感谢!