按照包含特定字段的记录数量的顺序选择记录
问题描述:
我们有一个如此排列的表:ID,Album_ID和Time_Voted。每次用户投票时, 它创建一个新的记录。我们希望显示前五个Album_ID,(每周末有最多包含该Album_ID的记录)。我知道如何做到这一点的唯一方法是选择过去一周的所有记录,然后对结果运行“while”,然后遍历数组,并在每次找到一个数组并添加一个+1到对应的Album_ID键相同的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
答
select album_id, count(album_id)
from wp_album_votes
group by album_id
order by 2 desc.
你可以用其他文字和日期在这个基础结构...
呸,你6秒:) –
完美打我吧!如果我只能给出2个正确的答案!猜猜+1必须要做! – Cyprus106