gpt4 book ai didi

sql - 使用 Query DSL 从每组中选择具有最大值的记录

转载 作者:行者123 更新时间:2023-12-04 15:52:42 26 4
gpt4 key购买 nike

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

这是表格:

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 无法解析这个类)。我正在使用 querydsl 4.x。提前谢谢你。

最佳答案

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

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

关于sql - 使用 Query DSL 从每组中选择具有最大值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53226053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com