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

如何为employees表的salary列对应6个emp_id批量插入薪资值

正确更新已有员工薪资的SQL方法

你之前的语句错误原因

  • INSERT语句是用来新增整条记录的,不是更新已有行的字段,执行它会试图插入6条无emp_id的新记录(大概率因emp_id非空报错),完全不符合需求。
  • 第二条语句语法错误,ALTER TABLE仅用于修改表结构(比如添加列、调整字段类型),不能用来更新或插入数据。

方法1:直接用UPDATE+CASE匹配更新(适合少量数据)

这是最直观的方式,针对每个emp_id设置对应薪资:

UPDATE employees
SET salary = CASE emp_id
    WHEN 101 THEN 37000
    WHEN 102 THEN 32000
    WHEN 103 THEN 35000
    WHEN 104 THEN 45000
    WHEN 105 THEN 55000
    WHEN 106 THEN 37000
    ELSE salary -- 保留其他员工的默认薪资,避免误改
END;

方法2:临时表关联更新(适合批量数据)

如果后续有大量类似批量更新操作,用临时表存储对应关系再关联更新更高效:

-- 创建临时表存储emp_id和对应薪资
CREATE TEMPORARY TABLE emp_salary (
    emp_id INT,
    salary INT
);

-- 插入对应数据
INSERT INTO emp_salary (emp_id, salary)
VALUES (101,37000), (102,32000), (103,35000), (104,45000), (105,55000), (106,37000);

-- 关联原表更新薪资
UPDATE employees e
JOIN emp_salary es ON e.emp_id = es.emp_id
SET e.salary = es.salary;

-- 用完可删除临时表
DROP TEMPORARY TABLE emp_salary;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:41:05