首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql -按其他关系计数进行排序查询

sql -按其他关系计数进行排序查询
EN

Stack Overflow用户
提问于 2015-12-31 15:44:37
回答 2查看 1.2K关注 0票数 3

我的桌子就是这样的。

所以一首歌可以有更多的选票。我想得到所有的歌曲,根据它有多少选票排序。我怎么能这么做?

例句:这张歌表应该是

代码语言:javascript
复制
1,"Master Of Puppets"
2,"Don't Cry"
3,"Baby"
4,"Song name"
5,"I want to break free"

投票结果如下:

代码语言:javascript
复制
1,5
2,5
3,5
4,2
5,2
6,1

我想查询歌曲表,以获得投票最多的歌曲,这些歌曲应该是这样的。

代码语言:javascript
复制
5,"I want to break free"
2,"Don't cry"
1,"Master Of Puppets"
3,"Baby"
4,"Song name"

是否只有一个查询就能做到这一点?我知道我可以对所有歌曲进行查询,然后对每首歌曲查询选票表,其中的songId是当前歌曲id,但我可以只使用一个查询吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-31 15:48:13

使用Count()聚合来计算每首歌获得的votes数量,并在Order by中使用它。

Left Outer join用于从song表返回行,即使一首歌曲从未得到投票。

尝尝这个

代码语言:javascript
复制
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 
票数 6
EN

Stack Overflow用户

发布于 2015-12-31 15:58:07

代码语言:javascript
复制
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 
);

也是一种选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34548603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档