我们有一个这样排列的表:ID,Album_ID和Time_Voted。每次用户投票时,
它创建一个新记录。我们想显示前五个Album_ID(在每个星期结束时包含该Album_ID的记录最多)。我知道如何执行此操作的唯一方法是选择上周的所有记录,然后对结果运行“ while”,然后遍历数组,并在每次找到对应的Album_ID键时添加+1相同Album_ID的实例。这是相当低效的,我相信可以通过SQL查询实现此目的,但是这超出了我的知识水平。

因此,问题是,有没有一种方法可以通过查询来获取每个album_ID数量的计数,然后根据该计数进行排列?

这是我正在使用的原始SQL语句。 YEARWEEK的内容刚在上周得到。

SELECT * FROM wp_album_votes WHERE YEARWEEK( Time_Voted ) = YEARWEEK( CURRENT_DATE - INTERVAL 7 DAY ) ORDER BY Album_ID

最佳答案

SELECT Album_ID, COUNT(*) AS NumVotes
    FROM wp_album_votes
    WHERE YEARWEEK( Time_Voted ) = YEARWEEK( CURRENT_DATE - INTERVAL 7 DAY )
    GROUP BY Album_ID
    ORDER BY NumVotes DESC LIMIT 5

10-07 18:08