我们有一个表格如下: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
答案 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.
你可以将你的其他文字和日期包装在这个基本结构中......