通过查询DSL从每个组中选择具有最大值的记录

丹尼斯·斯蒂芬诺夫(Denis Stephanov)

我有一个得分表,其中有球员得分,我想为每个得分最高的球员选择唯一的记录。

表格如下:

id | player_id | score | ...
1  | 1         |  10   | ...
2  | 2         |  21   | ...
3  | 3         |  9    | ...
4  | 1         |  30   | ...
5  | 3         |  2    | ...

预期结果:

id | player_id | score | ...
2  | 2         |  21   | ...
3  | 3         |  9    | ...
4  | 1         |  30   | ...

我可以这样用纯SQL实现:

SELECT *
FROM player_score ps
WHERE ps.score = 
(
    SELECT max(ps2.score)
    FROM player_score ps2
    WHERE ps2.player_id = ps.player_id
) 

您能告诉我如何使用查询dsl实现相同的查询吗?我使用JPASubQuery找到了一些解决方案,但该类对我不起作用(我的IDE无法解析该类)。我正在使用querydsl4.x。先感谢您。

罗伯特·贝恩

JPASubQuery已在querydsl 4中删除。请改为使用JPAExpressions.select您的WHERE子句应如下所示:

.where(playerScore.score.eq(JPAExpressions.select(playerScore2.score.max())
                            .from(playerScore2))
                            .where(playerScore2.playerId.eq(playerScore.playerId)))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

LINQ查询以从表中选择记录,其中2列具有最大值

在Oracle查询中选择具有最大值的行

jq从具有字段的最小值或最大值的数组中选择记录

如何编写SQL来选择具有每个组的最大值(值)的行?

从选择结果中选择具有最大值的行

如何使用dplyr选择每个组中具有最大值的行?

如何在HSQL中为每个组选择列中具有最大值的行?

选择R中每个组中具有最大值的行

F# 查询:在每个组中查找具有最大值的行

Postgres 查询:从两个不同的行中选择列上具有最大值的行

查找组中具有最大值的记录

在geopandas的列中选择具有最大值的行

在子查询中选择最大值

LINQ查询以获取具有最大值的记录

从每个记录的逗号分隔值中选择最小值/最大值

熊猫分组,选择3个具有最大值的元素,并取每个组的平均值

查询以从表中选择具有特定列值的记录

如果每个列中具有给定值,则从每个组中选择一条记录,否则选择任何一条记录

MySql的:选择每个组的最大值与相应的ID值

SQL获取每个组的最大值记录

如何在组(SQL)中查找具有最小值和最大值的记录?

如何在两列中选择最大值的记录?

在pandas数据框中选择具有最小值和最大值的行

在SQLite中选择具有最大值/最小值的行

从具有相应列值的多列mysql中选择最大值

在共享相同列值的记录组中选择“最大”记录

通过具有重复最大值的最大组样本大小过滤数据

Foxpro查询以从每个组中选择一个记录

每个组的Mongodb查找具有特定字段最大值(argmax)的文档