这就是我的桌子。
这样一首歌可以获得更多选票。我想获取所有歌曲,按其获得的票数排序。我怎样才能做到这一点?
示例:歌曲表将是
1,"Master Of Puppets" 2,"Don't Cry" 3,"Baby" 4,"Song name" 5,"I want to break free"
和投票:
1,5 2,5 3,5 4,2 5,2 6,1
我想查询歌曲表以获得投票最多的歌曲,应该按此顺序
5,"I want to break free" 2,"Don't cry" 1,"Master Of Puppets" 3,"Baby" 4,"Song name"
有没有办法仅通过一个查询来执行此操作?我知道我可以查询所有歌曲,然后查询每首歌曲的票表,其中songId是当前歌曲的ID,但是我可以只执行一次查询吗?
使用Count()
汇总来计算votes
每首歌的数量并在中使用它Order by
。
Left Outer join
用于从song
表返回行,即使一首歌从未获得投票
尝试这个
SELECT s.id,
s.title
FROM song s
LEFT OUTER JOIN votes v
ON s.id = v.songid
GROUP BY s.id,
s.title
ORDER BY Count(v.songid) DESC