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

时间:2011-09-29 14:36:17

标签: 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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

select album_id, count( album_id ) 
from wp_album_votes
group by album_id
order by 2 desc.

你可以将你的其他文字和日期包装在这个基本结构中......