微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – sql – 按其他关系计数排序查询

enter image description here

这就是我的表格.

所以一首歌可以有更多的选票.
我希望获得所有歌曲,按照它有多少票数排序.
我怎样才能做到这一点?

例:
歌曲表将是

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 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐