如果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条来, 展开
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个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询