0

我正在为一个页面保存 Facebook 喜欢的历史记录,该页面由user_id.

现在从这张表中,我需要根据最新的timestamp.

我从这个开始:

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

但这并不能满足我的要求,因为它返回了最低的第一条记录timestamps

我在网上阅读了一些关于GROUP从表中返回第一条记录的内容。

我也对桌子本身有所了解JOIN,但这也不起作用,或者我做错了什么。

4

2 回答 2

2

如果您只需要 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
于 2013-08-31T13:42:54.987 回答
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;
于 2013-08-31T14:15:11.857 回答