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

业务需求:先从B表中进行分组查询,查出B表中某字段重复最多的数据,选出前5条作为下一个查询条件selecttop5pidfromB表bleftjoinA表aonb.pid... 业务需求:先从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条来,
展开
 我来答
tj_angela
2014-04-14 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2589万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式