【发布时间】:2015-11-05 08:59:23
【问题描述】:
我有一个用户和一个分数表。每个用户有多个分数,例如:
- User1 有 3 个分数:45、66、98
- User2 有 2 个分数:75、45
- User3 有 3 个分数:94、66、12
只有每个用户的最高分是相关的。我想要实现的是获得得分最高的 10 个用户。这适用于以下 laravel 查询:
$results = Score::orderBy('score', 'desc')
->groupBy('user_id')
->limit(10)
->get()
这个查询的问题是它返回的是排名靠前的用户,而不是他们的最高分。它返回组中的第一个分数。所以当我查询给定的例子时,这将返回:
- 1:用户 1,45
- 2:用户 3、94
- 3:用户 2,75
如何确保它返回得分最高的顶级用户?我试图 ->distinct('score') 但这没有用。
【问题讨论】:
-
你尝试过“先分组再下单”?
-
是的,我做到了。没有什么不同。
-
这是错字吗?
->limit(10);->get()你在limit()之后使用; -
是的,编辑了,错误的副本。