繁体   English   中英

SQL 使用子查询更新列值

[英]SQL Update column values using subquery

在 MySQL 数据库表中,我想用查询结果UPDATE一些行。

例如,我有一张桌子

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
update employees, tempTable
set employees.salary=tempTable.newSalary
wnere employees.employeeId=tempTable.employeeId;
update employees
inner join temptable
on employees.employeeid = temptable.employeeid
set employees.salary = temptable.newsalary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM