在MySQL数据库表中,我想用查询结果对某些行进行UPDATE

例如,我有一张 table

TABLE employees(
  employeeId int,
  salary int,
)

我只想对以下查询中出现的行进行UPDATE编码,匹配employeeId,并且newSalary成为salary的修改值
(SELECT employeeId, newSalary FROM ....)

我本来以为将结果加载到临时表中,但是我不确定如何获取SET值,如下所示
UPDATE employees
SET salary = (???)
WHERE employeeId exists in tempTable

您可能会评论说这会导致非规范化,我知道这一点。我怀疑会有一些“您不想这样做”类型的回答,为简洁起见,请假设我有充分的理由。

最佳答案

加入子查询和您要更新的表:

UPDATE employees x INNER JOIN (
    SELECT employeeId, newSalary FROM ....
) y ON x.employeeId=y.employeeId
SET x.salary=y.newSalary

关于mysql - 使用子查询的SQL Update列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7064871/

10-13 05:59