
我的桌子就是这样的。
所以一首歌可以有更多的选票。我想得到所有的歌曲,根据它有多少选票排序。我怎么能这么做?
例句:这张歌表应该是
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,但我可以只使用一个查询吗?
发布于 2015-12-31 15:48:13
使用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 发布于 2015-12-31 15:58:07
SELECT s.id, s.title FROM
(
SELECT s.id, s.title, count(v.id) votes
FROM
song s
JOIN vote v on s.id = v.songId
GROUP BY s.id, s.title
ORDER BY votes desc
);也是一种选择。
https://stackoverflow.com/questions/34548603
复制相似问题