Mysql 按提交总数选择用户
我知道这很简单,但它让我发疯 我有一个用户表、评论表和图片表 我想要一个名单的前10名用户的基础上提交的意见和他们提交的照片总数 就这样 真丢人 更新:根据Ed的回答 以下是我的设置: 用户表用户id、用户名 图像表img_id,提交者为_id=users.user_id 注释表id,由用户id=users.user\u id提交 最后一个问题是:Mysql 按提交总数选择用户,mysql,Mysql,我知道这很简单,但它让我发疯 我有一个用户表、评论表和图片表 我想要一个名单的前10名用户的基础上提交的意见和他们提交的照片总数 就这样 真丢人 更新:根据Ed的回答 以下是我的设置: 用户表用户id、用户名 图像表img_id,提交者为_id=users.user_id 注释表id,由用户id=users.user\u id提交 最后一个问题是: select submittedby_id, sum(total) from (select submittedby_id, co
select submittedby_id, sum(total)
from
(select submittedby_id, count(img_id) as total from
images group by submittedby_id
union
select submittedby_id, count(id) as total from
comments group by submittedby_id
) as x
group by submittedby_id
order by sum(total) desc limit 10;
psuedocode当然可以,但您需要以下内容:
select
u.userid
, count(commentID) + count(photoID) as totalsubmissions
from users u
left outer
join comments c
on u.userid = c.userid
left outer
join pictures p
on u.userid = p.userid
group by
u.userid
order by 2 desc
fetch first 10 rows only
select username, sum(submissions)
from
(select username, count(picture_id) from
pictures group by username
union
select username, count(comment_id) from
comments group by username
)
group by username
order by sum(submissions) desc limit 10;
也许是这样的:
select
u.userid
, count(commentID) + count(photoID) as totalsubmissions
from users u
left outer
join comments c
on u.userid = c.userid
left outer
join pictures p
on u.userid = p.userid
group by
u.userid
order by 2 desc
fetch first 10 rows only
select username, sum(submissions)
from
(select username, count(picture_id) from
pictures group by username
union
select username, count(comment_id) from
comments group by username
)
group by username
order by sum(submissions) desc limit 10;
从概念上概述:
统计每个表中用户提交的内容
合并这些,这样每个用户都将从子查询中获得0到2个计数。
再分组一次,将两个计数相加,然后按顺序排列,使最高数量位于顶部。
希望这有帮助。调整Ed的答案:
select submittedby_id, sum(submissions)
from
(select submittedby_id, count(img_id) as submissions from
images group by submittedby_id
union all
select submittedby_id, count(id) as submissions from
comments group by submittedby_id
) as x
group by submittedby_id
order by sum(submissions) desc limit 10
我相信你想在这里进行联合,只要联合就可以忽略看起来相同id和提交计数的记录。总提交计数将是错误的,因为评论和图片之间存在笛卡尔积。不过,如果只需要对顶级用户进行排序,那也没关系。啊,你说得对。Ed的帖子实际上是更准确的方法。1248-每个派生表都必须有自己的别名。。。我是不是在什么地方漏了一个as z?是的,在右括号后面和groupby之前加上一个as x。这是这里的正确答案。