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

如何基于关联表批量更新Regions表的产品计数?

批量更新Regions表product_count字段的SQL语句

核心思路是先从Inventory表按区域分组统计产品数量,再关联Regions表完成批量更新,以下是主流数据库的实现写法:

MySQL 实现

仅更新有产品记录的区域

UPDATE regions r
JOIN (
    SELECT region_id, COUNT(*) AS product_count
    FROM inventory
    GROUP BY region_id
) i ON r.id = i.region_id
SET r.product_count = i.product_count;

更新所有区域(无产品的区域设为0)

UPDATE regions r
LEFT JOIN (
    SELECT region_id, COUNT(*) AS product_count
    FROM inventory
    GROUP BY region_id
) i ON r.id = i.region_id
SET r.product_count = COALESCE(i.product_count, 0);

PostgreSQL 实现

简洁写法(自动处理无产品区域为0)

UPDATE regions r
SET product_count = (
    SELECT COUNT(*)
    FROM inventory i
    WHERE i.region_id = r.id
);

关联子查询写法

UPDATE regions r
SET product_count = i.product_count
FROM (
    SELECT region_id, COUNT(*) AS product_count
    FROM inventory
    GROUP BY region_id
) i
WHERE r.id = i.region_id;

更新所有区域(无产品的区域设为0)

UPDATE regions r
SET product_count = COALESCE(i.product_count, 0)
FROM (
    SELECT region_id, COUNT(*) AS product_count
    FROM inventory
    GROUP BY region_id
) i
WHERE r.id = i.region_id;

UPDATE regions r
SET product_count = 0
WHERE NOT EXISTS (
    SELECT 1 FROM inventory WHERE region_id = r.id
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:35:34