首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -如何使用另一个表中的计数进行排序

SQL -如何使用另一个表中的计数进行排序
EN

Stack Overflow用户
提问于 2011-01-25 00:43:17
回答 6查看 12.6K关注 0票数 23

1.博客

代码语言:javascript
复制
blogger_id
1 
2
3

2. Posts

代码语言:javascript
复制
post_from_blogger_id
1 
1
1
2
2
3

正如你所看到的,博主№1发布的信息比其他人多,博主№3发布的信息更少。问题是如何构建一个查询来选择所有博客作者,并根据他们的帖子数量对他们进行排序?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-25 00:49:40

代码语言:javascript
复制
 SELECT bloggers.*, COUNT(post_id) AS post_count
    FROM bloggers LEFT JOIN blogger_posts 
    ON bloggers.blogger_id = blogger_posts.blogger_id
    GROUP BY bloggers.blogger_id
    ORDER BY post_count

(注意: MySQL有特殊的语法,允许您分组而不聚合所有值,它正是为这种情况而设计的)。

票数 51
EN

Stack Overflow用户

发布于 2011-01-25 00:46:18

使用子查询。

代码语言:javascript
复制
select * from (
    select post_from_blogger_id, count(1) N from Posts
    group by post_from_blogger_id) t
order by N desc
票数 4
EN

Stack Overflow用户

发布于 2011-01-25 00:48:17

试试这个:

代码语言:javascript
复制
SELECT B.blogger_id,
       B.blogger_name,
       IFNULL(COUNT(P.post_from_blogger_id ),0) AS NumPosts 
From Blogger AS B
LEFT JOIN Posts AS P ON P.post_from_blogger_id = B.blogger_id
GROUP BY B.blogger_id, B.blogger_name
ORDER BY COUNT(P.post_from_blogger_id ) DESC

这将连接这两个表,并计算Posts表中的条目数量。如果没有,则计数为0 (IFNULL)。

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

https://stackoverflow.com/questions/4784545

复制
相关文章

相似问题

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