我有一个用户和一个分数表。每个用户都有多个分数,例如:
每个用户只有最高分才相关。我想要实现的是获得得分最高的10位用户。这适用于以下laravel查询:
$results = Score::orderBy('score', 'desc')
->groupBy('user_id')
->limit(10)
->get()
此查询的问题在于它返回最高用户,但不是最高分。它返回组中的第一个分数。因此,当我查询给定的示例时,将返回:
如何确保它返回得分最高的顶级用户?我尝试了 - >不同('得分')但这并没有奏效。
答案 0 :(得分:2)
试试这个
$results = Score::select("*", DB::raw("MAX(score) as max")
->groupBy('user_id')
->orderBy('max', 'desc')
->limit(10)
->get();
答案 1 :(得分:0)
试试这个: (查询构建器)
语法:
Request
修改您的查询:
if (orientation == UIInterfaceOrientationMaskPortrait)
{
self.view.frame = CGRectMake(0, 0, 1000, 800);
self.tableView1.frame = CGRectMake(1, 0, 764,510);
}
else if (orientation == UIInterfaceOrientationMaskLandscapeLeft)
{
self.view.frame = CGRectMake(0, 0, 1300, 370);
self.tableView1.frame = CGRectMake(0, 0, 1300, 370);
self.view.backgroundColor = [UIColor blackColor];
}
希望这有用。
答案 2 :(得分:0)
- 我不太了解querybuilder,但这个查询解决了问题
select top 10 *
from
(select userID, max(score) score from yourTable group by userID) K
order by score desc