这就是我的表格.
所以一首歌可以有更多的选票.
我希望获得所有歌曲,按照它有多少票数排序.
我怎样才能做到这一点?
例:
歌曲表将是
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()Aggregate计算每首歌曲获得的投票数,并在Order by中使用它.
左外连接用于从歌曲表中返回行,即使一首歌从未投票
试试这个
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