2013-08-31 139 views
0

喜歡的頁面,通過user_id鑑定。MySQL查詢與GROUP BY和ORDER BY時間戳DESC

現在,從這個表,我需要得到代表USER_ID的和他們最新的數喜好的基礎上,最近timestamp一組。

我開始了與此:

SELECT * 
FROM facebook_log 
GROUP BY user_id 
ORDER BY timestamp DESC; 

但是,這並不做我想做的,因爲它返回最低的timestamps第一的記錄。

我在網上約GROUP讀的東西從表中返回的第一個記錄。

我也瞭解一些關於JOIN的表本身,但也不管用,還是我做錯了什麼。

+0

你想要做什麼? – fancyPants

回答

1

如果你只需要USER_ID和時間標記,你可以做

select f.user_id, max(f.timestamp) 
from facebook_log 
group by user_id; 

,如果你從表中需要的所有數據,你可以做

select f.* 
from facebook_log f 
inner join (select max(timestamp) mt, user_id 
      from facebook_log 
      group by user_id) m 
on m.user_id = f.user_id and m.mt = f.timestamp 
+0

感謝您的幫助! 我也有職稱和配置,除了這一個表。下面是最終的結果: '選擇 \t f.timestamp, \t u.title, \t f.likes FROM \t facebook_log爲F INNER JOIN( \t選擇 \t \t MAX(時間戳)MT, \t \t user_id說明 \t FROM \t \t facebook_log \t GROUP BY \t \t user_id說明 )米ON m.user_id = f.user_id AND m.mt = f.timestamp INNER JOIN臉譜作爲U ON f.user_id = u.id WHERE \t u.enabled = 1;' –

0

你也可以得到最新數量的喜歡使用這個MySQL技巧:

select f.user_id, max(f.timestamp), 
     substring_index(group_concat(f.numlikes order by f.timestamp desc), ',', 1) as LatestLikes 
from facebook_log f 
group by f.user_id;