MySQL - 在过去一个月内获得最多的"liked"用户



我在社区论坛上有一个"喜欢"系统。所有内部喜欢都存储在名为log_like的数据库中。

CREATE TABLE `log_like` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_member` mediumint(8) NOT NULL,
  `id_message` int(10) NOT NULL,
  `id_poster` mediumint(8) NOT NULL DEFAULT '0',
  `time` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `id_member` (`id_member`),
  KEY `id_message` (`id_message`)
) ENGINE=MyISAM;

我需要获取上个月最喜欢的会员 ID(上面 DDL 中的 id_poster 字段)。所以我可能需要对过去一个月的记录中出现多少次相同的"id_poster"进行分组和计算。我想将其限制为最受欢迎的 10 个。字段"time"存储 unix 时间以供参考。

不幸的是,我不知道如何实现这一目标。谁能帮忙?

select id_poster, count(*) like_count
from log_like
where time > unix_timestamp(date_sub(now(), interval 1 month))
group by id_poster
order by like_count desc
limit 10

如果你有一个索引 id_poster .

所以,这是我最终得到的:

SELECT 
  id_poster, 
  COUNT(1) AS like_count
FROM 
  log_like
WHERE 
  time BETWEEN UNIX_TIMESTAMP('2012-11-01') AND UNIX_TIMESTAMP('2012-12-01')
GROUP BY 
  id_poster
ORDER BY 
  like_count 
DESC
LIMIT 10

通过这种方式,我得到了过去一个月(2012 年 11 月)的最高结果,而不是像之前建议的那样从现在起的过去 30 天。(非常感谢巴马尔的所有工作)

SELECT DISTINCT id, count(*) as '#oflikes' from log_like
WHERE 
  time BETWEEN UNIX_TIMESTAMP('2012-11-01') AND UNIX_TIMESTAMP('2012-12-01')
LIMIT 10;

相关内容

  • 没有找到相关文章

最新更新