LambdaQueryWrapper group by 取最大值
时间: 2023-07-01 08:22:08 浏览: 4204
如果您是指在使用 MyBatis-Plus 的 LambdaQueryWrapper 进行分组查询并取某个字段的最大值,可以使用如下方式:
```
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();
queryWrapper.select("group_id", "max(score)").groupBy("group_id");
List<Map<String, Object>> result = entityMapper.selectMaps(queryWrapper);
```
在这个示例中,我们使用 `select` 方法选择了需要查询的字段,其中第二个参数是 `max(score)`,表示我们要查询 `score` 字段的最大值。然后使用 `groupBy` 方法分组查询,这里是按照 `group_id` 分组。最后使用 `selectMaps` 方法进行查询,返回的结果是一个 `List<Map<String, Object>>` 类型的数据,其中每个 Map 表示一条记录的结果,键是字段名,值是对应的值。
请注意,以上示例中使用的是 QueryWrapper 而不是 LambdaQueryWrapper,因为在 MyBatis-Plus 中,QueryWrapper 支持更多的查询功能,并且也可以使用 Lambda 表达式。如果您一定要使用 LambdaQueryWrapper 进行分组查询,可以使用 `groupBy` 方法进行分组,然后使用 `max` 方法取最大值,具体代码如下:
```
LambdaQueryWrapper<Entity> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.select(Entity::getGroupId, Functions.max(Entity::getScore)).groupBy(Entity::getGroupId);
List<Map<String, Object>> result = entityMapper.selectMaps(lambdaQueryWrapper);
```
在这个示例中,我们使用 `select` 方法选择了需要查询的字段,其中第二个参数是 `Functions.max(Entity::getScore)`,表示我们要查询 `score` 字段的最大值。然后使用 `groupBy` 方法分组查询,这里是按照 `group_id` 分组。最后使用 `selectMaps` 方法进行查询,返回的结果是一个 `List<Map<String, Object>>` 类型的数据,其中每个 Map 表示一条记录的结果,键是字段名,值是对应的值。
阅读全文