我在MySQL中有3个表格如下:
用户: id用户名...
发布: id user_id title ....
user_post_like: id post_id user_id like_date(每个像在一个单独的行中一样)
每个用户都可以发送和喜欢发帖。
现在,我希望根据用户帖子在过去24小时内使用SQL命令获得的喜欢(来自user_post_like表)的数量获得指定用户的每日排名。
可能使用count命令来计算比指定用户更喜欢的用户。
答案 0 :(得分:1)
select u.username, count(l.id) as likes
from user_post_like l
join `user` u on u.od = l.user_id
where now() - interval 24 hour >= l.like_date
group by u.id, u.username
order by count(l.id) desc
如果你也需要一个等级号,你可以做
select u.username, count(l.id) as likes, @rank := @rank + 1 as rank
from user_post_like l
join `user` u on u.od = l.user_id
cross join (select @rank := 0) r
where now() - interval 24 hour >= l.like_date
group by u.id, u.username
order by count(l.id) desc