sql server 写group by语句外加多表查询,我给A表分组以后,查询结果里就不能出现B表的字段信息了????

请教高手。在线等
2024-12-19 13:01:27
推荐回答(4个)
回答1:

那样当然不行了,group后面必须跟除了聚合函数以外的所有字段。所以必须把a表的结果集当作一个tab再去连接B表才可以

可以这样做
select b.*, t1.*
from (select id, name, max(age) from a group by id,name) t1, b
where t1.xxx = b.xxx加上两个表的连接条件

回答2:

可以出现,你的查询语句是先进行多表连接,然后再分组,如果你想在结果中出现B表字段,要么出现的是对B表字段聚合函数的使用(例如:max(B.c1) ),要么就在分组中也把你想要的B字段加进去,如果你分组并不象针对B造成影响,那也可以在结果集中使用子查询
ex1:
select A.id,max(B.c1)
from A,B
where A.id = B.id
group by A.id
ex2:
select A.id,B.name
where A.id = B.id
group by A.id,B.name
ex3:
select A.id,(select B.price where .....) as price
where A.id = B.id
group by A.id

回答3:

用子查询:
select * from (select id from a group by id) z, b where z.id = b.id

回答4:

这样看看你具体是什么情况了,你能提供数据吗?