日期:2014-05-18  浏览次数:20396 次

求写一条查询语句
有两个表a { UserId int, Messageid int }用户所创建的信息
b{MessageId}转发的信息
查询别人转发了该用户总共多少条信息


------解决方案--------------------
SQL code

select a.userid,count(*) as cnt --转发条数
from a join b on a.messageid = b.messageid
group by a.userid

------解决方案--------------------
SQL code
select
 a.他转发别人的条数,
 b.别人转发的条数
from
 (select messageid,count(1) as 他转发别人的条数 group by messageid)a 
left join
 (select messageid,count(1) as 别人转发的条数 group by messageid)b
on
 a.messageid = b.messageid

------解决方案--------------------
SQL code

-- 查询有多少人转发了他的信息(查人数 同一个人转发了多次只能算一个人)
select count(distinct b.UserId) s1
from a
inner join b on a.Messageid=b.Messageid
where a.UserId=[指定的ID]

-- 查询他转发了多少个人的信息(查人数 同一个人转发了多次只能算一个人)
select count(distinct a.UserId) s2
from b
inner join a on b.Messageid=a.Messageid
where b.UserId=[指定的ID]

------解决方案--------------------
SQL code

-- 查询a表中前10条,别人没有转发过的信息
select top 10 a.*
from a
left join b on a.Messageid=b.Messageid
where b.Messageid is null