You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server跨表操作:统计个体表关联数并更新家庭表total_ind字段

实现方案

推荐写法(UPDATE + 关联子查询)

SQL Server支持UPDATE语句关联多表操作,写法如下:

UPDATE f
SET f.total_ind = ISNULL(i.person_count, 0)
FROM family f
LEFT JOIN (
    -- 统计每个家庭关联的个体数量
    SELECT Family_ID, COUNT(1) AS person_count
    FROM individual
    GROUP BY Family_ID
) i ON f.id = i.Family_ID

逻辑说明

  • 内层子查询对individual表按Family_ID分组,统计每个家庭的总人数
  • 用LEFT JOIN关联family表和统计结果,保证没有关联个体的家庭也会被更新
  • ISNULL函数将无成员家庭的total_ind赋值为0,若不需要保留无成员家庭的NULL值,可以去掉ISNULL、将LEFT JOIN改为INNER JOIN

验证建议

执行更新前可以先运行以下查询确认统计结果是否符合预期,避免误操作:

SELECT 
    f.id AS 家庭ID,
    ISNULL(i.person_count, 0) AS 统计个体数,
    f.total_ind AS 原有字段值
FROM family f
LEFT JOIN (
    SELECT Family_ID, COUNT(1) AS person_count
    FROM individual
    GROUP BY Family_ID
) i ON f.id = i.Family_ID

内容的提问来源于stack exchange,提问作者Roza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:57:02