获取包含 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(...