我在mysql中有tabe,我想根据created_on(时间戳)通过user_id获得最多的赞 如果有多个记录,则应显示最早的发布结果。这是我的表“ post_likes”
id post_id likes created_on
1 91 1 1545311881
2 82 1 1545201971
3 84 1 1545160544
4 91 1 1545146273
5 84 1 1545123998
我尝试了以下查询,但对我不起作用
select post_id, count(likes)
from post_likes
group by post_id
ORDER BY created_on ASC LIMIT 1
显示我最老但有1个赞,我想获得最大+最老的帖子结果。
答案 0 :(得分:0)
尝试:
SELECT post_id, count(likes), created_on
FROM
(
SELECT * FROM post_likes Order by created_on
) as t1
group by post_id ORDER BY count(1) desc
LIMIT 1
注意:如果您想要post_id:91的最早时间戳,则必须在分组依据之前按asc中的时间戳排序。否则时间戳会给您不确定的结果。
答案 1 :(得分:0)
对于每个帖子,您需要生成COUNT(likes)
来查看它总共有多少赞,并且还需要MIN(created_on)
找出该帖子最早的赞日期。完成后,您可以按喜欢和创建日期进行排序:
SELECT post_id, COUNT(likes) AS likes, MIN(created_on) AS created_on
FROM post_likes
GROUP BY post_id
ORDER BY likes DESC, created_on ASC
LIMIT 1
输出:
post_id likes created_on
84 2 1545123998
更新:要仅查看过去24小时内的帖子喜欢,您需要首先使用子查询过滤表格,该子查询仅选择过去24小时内喜欢的帖子({{1} }:
created_on > UNIX_TIMESTAMP() - 24 * 60 * 60)
注意-对于您的示例数据,没有帖子符合此条件。如果您将条件扩展到更长的天数,此demo会为您提供结果。