获取包含 table 中最大值的所有结果
Get all results that contain the largest value in table
假设我有一个非常简单的 table 叫做 test:
ID AGE NAME
1 12 Bob
1 13 Bob
2 13 John
3 9 Michael
3 11 Michael
我想要 return table 中具有最大 AGE
的所有结果。因此对于这种情况,结果将是年龄为 13 岁的实体:
ID AGE NAME
1 13 Bob
2 13 John
我认为应该存在这样的东西,我的思考过程如下(即使我知道语法不起作用):
connection.getSqlQuery()
.from(test)
.max(test.age)
.list(test.id, test.age, test.name);
对此的正确查询是什么?
您可以创建一个子查询并在您的 where 子句中使用它:
// Aggregate to get the maximum age
var subQuery = connection.getSqlQuery()
.select(test.age.max())
.from(test);
connection.getSqlQuery()
.from(test)
.where(test.age.eq(subQuery))
.list(test.id, test.age, test.name);
如果使用JPA,也可以使用var subQuery = JPAExpressions.select(...
假设我有一个非常简单的 table 叫做 test:
ID AGE NAME
1 12 Bob
1 13 Bob
2 13 John
3 9 Michael
3 11 Michael
我想要 return table 中具有最大 AGE
的所有结果。因此对于这种情况,结果将是年龄为 13 岁的实体:
ID AGE NAME
1 13 Bob
2 13 John
我认为应该存在这样的东西,我的思考过程如下(即使我知道语法不起作用):
connection.getSqlQuery()
.from(test)
.max(test.age)
.list(test.id, test.age, test.name);
对此的正确查询是什么?
您可以创建一个子查询并在您的 where 子句中使用它:
// Aggregate to get the maximum age
var subQuery = connection.getSqlQuery()
.select(test.age.max())
.from(test);
connection.getSqlQuery()
.from(test)
.where(test.age.eq(subQuery))
.list(test.id, test.age, test.name);
如果使用JPA,也可以使用var subQuery = JPAExpressions.select(...