如何用一个表的值统计另一表结果?SQL新增统计列方法
在Table_A中新增列统计Table_B对应Team_Number的出现次数
没问题!要实现这个需求很简单,我给你两种常用的SQL写法,你可以根据自己的场景选择:
方法一:关联子查询
这种写法逻辑直观,针对Table_A的每一行单独统计对应Team_Number在Table_B里的数量:
SELECT a.Id, a.Coach, a.Team_Color, a.Team_Number, -- 子查询统计当前Team_Number在Table_B中的出现次数 (SELECT COUNT(*) FROM Table_B b WHERE b.Team_Number = a.Team_Number) AS Player_Count FROM Table_A a;
方法二:LEFT JOIN + GROUP BY
如果你的数据量较大,这种写法通常性能更好,通过关联后分组统计:
SELECT a.Id, a.Coach, a.Team_Color, a.Team_Number, -- 统计关联后的Table_B记录数,无匹配时返回0 COUNT(b.Id) AS Player_Count FROM Table_A a LEFT JOIN Table_B b ON a.Team_Number = b.Team_Number -- 按Table_A的所有列分组,确保每行数据独立 GROUP BY a.Id, a.Coach, a.Team_Color, a.Team_Number;
效果验证
根据你提供的示例数据:
- Table_A中Id为001的行,Team_Number是121,对应Table_B里有3条记录,所以
Player_Count会返回3 - Id为002、003的行,如果Table_B里没有对应的Team_Number,
Player_Count会返回0
内容的提问来源于stack exchange,提问作者user3258383
相关产品推荐
相关产品推荐

