我有一個看起來像這樣的數據庫:相當於mysql/laravel中的限定語句嗎?
ID | facebook_id | likes | created_at
--------------------------------------------------
1 | x | 100 | 2017-01-01 12:10:15
2 | x | 110 | 2017-01-02 12:10:15
3 | y | 115 | 2017-01-01 12:10:15
4 | y | 120 | 2017-01-02 12:10:15
5 | z | 200 | 2017-01-01 12:10:15
6 | z | 201 | 2017-01-01 12:10:15
7 | z | 200 | 2017-02-02 12:10:15
8 | z | 205 | 2017-02-03 12:10:15
9 | z | 250 | 2017-03-04 12:10:15
我想獲得最新的記錄每個表的唯一facebook_id
的的然後likes
在descending
順序訂購。我正在使用laravel 5.4和mysql作爲數據庫。在teradata我會做類似
QUALIFY ROW_NUMBER() OVER(PARTITION BY facebook_id ORDER BY created_at DESC) = 1
通過facebook_id
命令的結果,並通過獨特的facebook_id獲得最新的行。但我不確定如何在laravel/mysql中執行此操作。
我已經試過
Database::select('facebook_id', 'likes', 'created_at')
->orderBy('likes', 'desc')
->distinct('facebook_id')
->latest('created_at')
->limit(20)
->get();
,但它只是令它通過likes
和犯規讓我唯一facebook_id
的
我的結果是:
Top Profile ID: z Likes:250
Top Profile ID: z Likes:205
Top Profile ID: z Likes:201
Top Profile ID: z Likes:200
我想要得到的是:
Top Profile ID: z Likes:250
Top Profile ID: y Likes:120
Top Profile ID: x Likes:110
沒有等同於'qualify'因爲沒有窗函數。我可能會建議你問另一個問題,包括teradata查詢(或簡化版本),並詢問如何在MySQL中編寫它。 –
嘗試: 數據庫::選擇( 'facebook_id', '喜歡', 'created_at') - >排序依據( '喜歡', '降序') - >獲得() - >獨特的( 'facebook_id') ; – Nevermore