sqlserver 连接查询的问题,a表无重复记录,与b表中的记录为1对N关系,如何在查得a表信息时统计b表记录数
例如a表中包括
id name age
1 n1 15
2 n2 17
3 n3 22
b 表内容如下
id file
1 f1
1 f2
2 f3
3 f4
怎么才能在得到a表信息时同时统计出对应的b表记录数,如下边这种结果:
id name age filecount
1 n1 15 2
2 n2 17 1
3 n3 22 1
我知道可以先对b表做个统计处理生成一个临时表,然后用a与临时表进行联合查询,但是感觉这种效率太低,有什么办法可以一个语句就搞定,求指导....
答案:第一种
select t1.id,
t1.name,
t1.age,
(select count(1) from b t2 where t1.id = t2.id) filecount
from a t1
第二种
select t1.id, t1.name, t1.age, t2.filecount
from a t1
left join (select id, count(1) filecount from b group by id) t2
on t1.id = t2.id
其他:建立临时表最后列统计B表ID数不行? select t1.id,t1.name,t1.age,t2.count
from a t1,
(select id,count(file) as count from b group by id) t2
where t1.id=t2.id select a.id,a.name,a.name,count(b.id) as filrcount
from a,b
where a.id=b.id
group by a.id
上一个:怎么用SQL语句去优化数据库是SQLserver2005
下一个:表t_icitem,需要通过语句把这张表里面的FNumber,FNameEn,FModel,FChartNumber等字段引出并新建到excel上