如果group by不能用做子查询,还有什么好的办法解决吗?

业务需求:先从B表中进行分组查询,查出B表中某字段重复最多的数据,选出前5条作为下一个查询条件
select top 5 pid from B表 b left join A表 a on b.pid = a.pid group by pid order by desc
上面的sql会从B表中查出5个值,这个5个值作为查询条件再去A表中查询
select * from A表 a a.pid in ( select top 5 pid from B表 b left join A表 a on b.pid = a.pid group by pid order by desc )

测试后发现group by 不能用做子查询的一个条件,和in函数发生冲突,至今不知道如何解决,求大神指点一二
补充一下:从B表查数据的时候,是统计B表相同的pid的数量,然后按出现次数高低排序,选出前5条来,

第1个回答  2014-04-14
select a.*
from A表 a
inner join (select top 5 pid from B表 b left join A表 a on b.pid = a.pid group by pid order by desc ) p
on a.pid=p.pid
相似回答