当前位置:数据库 > SQLServer >>

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上

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,