orm - JPQL/SQL : How to select * from a table with group by on a single column?

标签 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

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

最佳答案

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

关于orm - JPQL/SQL : How to select * from a table with group by on a single column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723725/

相关文章:

java - 为什么@Valid会导致可重入刷新?

mysql - 使用 MySQL 中的存储过程参数限制选定的行数

MySQL 联合、连接和限制

python - SQLAlchemy,预先加载对象刷新

sql-server - Node.js 上 SQL Server 的 ORM

jpa - 目标/来源和拥有/不拥有实体

sql-server-2005 - JPA/Hibernate/MS SQL Server 不返回生成的 id 值

java - 在 Spring MVC 应用程序中修复 Null EntityManger?

java - 使用 JPA 时的项目 JAR 文件结构

sql - 基于从另一个表中选择的值进行限制