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

如何从关联Employees表取值更新Companies表的BusinessType字段

解决方案

因为题目已明确同一家公司关联的所有员工BusinessType值完全一致,不需要处理值冲突问题,以下提供不同场景下的SQL写法:

  • SQL Server 写法

    直接使用UPDATE FROM关联更新,执行效率最高:
    UPDATE c
    SET c.BusinessType = e.BusinessType
    FROM Companies c
    INNER JOIN Employees e 
        ON c.Id = e.CompanyId
    
  • MySQL 写法

    语法和SQL Server略有差异,关联逻辑写在SET之前:
    UPDATE Companies c
    INNER JOIN Employees e 
        ON c.Id = e.CompanyId
    SET c.BusinessType = e.BusinessType
    
  • 全数据库通用写法

    用标量子查询实现,适配所有关系型数据库,以下示例为SQL Server语法,其他数据库调整取首行的语法即可:
    UPDATE Companies
    SET BusinessType = (
        SELECT TOP 1 BusinessType 
        FROM Employees 
        WHERE CompanyId = Companies.Id
    )
    -- 以下条件避免没有员工的公司BusinessType被更新为NULL,不需要可删除
    WHERE EXISTS (
        SELECT 1 
        FROM Employees 
        WHERE CompanyId = Companies.Id
    )
    
    不同数据库的取首行语法替换规则:
    • Oracle 替换TOP 1为FETCH FIRST 1 ROW ONLY
    • MySQL、PostgreSQL 替换TOP 1为LIMIT 1

注意事项

  • 没有关联员工的公司如果需要保留原有BusinessType值,必须加上EXISTS条件过滤
  • 若涉及大表更新需求,建议提前开启事务控制,避免更新出错无法回滚

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:39:04