我正在尝试根据数据库中有多少行来定位用户。
我的数据集看起来像这样(简化):
A .... John
A .... John
B .... Mike
A .... John
B .... Mike
C .... Denis
我想要前三个唯一名称,按左边的值出现的次数排序 我能用Laravel雄辩的ORM做到吗?
结果将是:
John
Mike
Denis
由于
答案 0 :(得分:4)
这就是你用Laravel的Eloquent ORM来做到这一点
Model::select('name')
->groupBy('name')
->orderBy(DB::raw('count(name)'), 'desc')
->take(3)
->get();
如果您使用的是Laravel 3,请使用蛇盒:
Model::select('name')->group_by('name')->order_by(DB::raw('count(name)'), 'desc')->take(3)->get();
如果您希望使用DB::table('tableName')->
代替Model::
,可以使用查询构建器(流利)。
备注强>:
DB::raw()
指示Laravel不要放
那里的背景。take()
限制行数。 答案 1 :(得分:0)
不是laravel解决方案,但它可能有效(纯SQL,特别是MySQL):
select name
from yourTable
where ... # Your filter conditions go here
group by name
order by count(id) desc
limit 3;
希望这有帮助