按照包含特定字段的记录数的顺序选择记录

Cyp*_*106 0 mysql sql

我们有一个表格,如下所示: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
Run Code Online (Sandbox Code Playgroud)

Joe*_*lli 6

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
Run Code Online (Sandbox Code Playgroud)