2013-04-16 43 views
1

我想根據用戶名和數據庫中有多少行來區分用戶。
我的數據集看起來像這樣(簡化):Laravel雄辯的數據排名

A .... John 
A .... John 
B .... Mike 
A .... John 
B .... Mike 
C .... Denis 

我想前三唯一的名稱,由左邊的值出現了多少次排序。
我可以用Laravel雄辯的ORM來做到嗎?

一個結果將被:

John 
Mike 
Denis 

感謝

+0

您是否想特別爲laravel解決方案?或者「純SQL」解決方案可以爲你工作? – Barranka

+0

那麼,兩者都會.. ..我只是好奇關於雄辯 – intelis

回答

4

這就是你如何用Laravel的雄辯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不要把 backtics那裏。
  • take()限制行。
0

不是laravel解決方案,但它可能工作(純SQL,特別是MySQL的):

select name 
from yourTable 
where ... # Your filter conditions go here 
group by name 
order by count(id) desc 
limit 3; 

希望這有助於