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

MySQL如何统计表中特定名称行数并更新至另一表对应行

MySQL统计Table1指定NAME行数并更新Table2对应字段

方法一:直接子查询更新

先统计Table1中NAME = 'John Doe'的行数,直接将结果作为更新值写入Table2的对应记录:

UPDATE Table2
SET count = (SELECT COUNT(*) FROM Table1 WHERE NAME = 'John Doe')
WHERE NAME = 'John Doe';

如果需要先验证统计结果,可以单独执行这条查询:

SELECT COUNT(*) AS john_doe_count FROM Table1 WHERE NAME = 'John Doe';

方法二:关联查询更新(适合扩展批量场景)

通过JOIN子查询关联两张表,这种写法更灵活,后续如果要批量更新多个NAME的统计值,只需去掉WHERE条件即可:

UPDATE Table2 t2
JOIN (
    SELECT NAME, COUNT(*) AS total
    FROM Table1
    WHERE NAME = 'John Doe'
    GROUP BY NAME
) t1 ON t2.NAME = t1.NAME
SET t2.count = t1.total;

注意事项

  • 若Table2中不存在NAME = 'John Doe'的记录,上述更新语句不会产生任何修改
  • 如果Table1中没有匹配的John Doe记录,count字段会被设为0;若想保留原count值不修改,可以用COALESCE函数处理:
    UPDATE Table2
    SET count = COALESCE((SELECT COUNT(*) FROM Table1 WHERE NAME = 'John Doe'), count)
    WHERE NAME = 'John Doe';
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:24:51