In a MySQL database table, I want to UPDATE some rows with the results from a query.
For instance, I have a table
TABLE employees(
  employeeId int,
  salary int,
)
and I want to UPDATE only the rows that appear in the below query, with employeeIds matching and with newSalary becoming the modified value for salary
(SELECT employeeId, newSalary FROM ....)
I originally thought to load the results into a temporary table, but I'm not sure how to get the SET value, as illustrated here
UPDATE employees
SET salary = (???)
WHERE employeeId exists in tempTable
You might comment that this results in denormalization, I'm aware of this. I suspect there will be some "you don't want to do this" type responses, for the sake of brevity, please just assume I have a good reason.
Join the subquery and your table you gonna updating:
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
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With