Значения столбца SQL Update с использованием подзапроса - PullRequest
5 голосов
/ 15 августа 2011

В таблице базы данных MySQL я хочу UPDATE несколько строк с результатами запроса.

Например, у меня есть таблица

TABLE employees(
  employeeId int,
  salary int,
)

, и я хочуUPDATE только строки, которые появляются в приведенном ниже запросе, с employeeId s соответствием и с newSalary, становящимся измененным значением для salary

(SELECT employeeId, newSalary FROM ....)

Я первоначально думал загрузить результаты ввременная таблица, но я не уверен, как получить значение SET, как показано здесь

UPDATE employees
SET salary = (???)
WHERE employeeId exists in tempTable

Вы можете прокомментировать, что это приводит к денормализации, я знаю об этом.Я подозреваю, что будут некоторые ответы типа «вы не хотите делать это», для краткости, пожалуйста, просто предположите, что у меня есть веская причина.

Ответы [ 3 ]

10 голосов
/ 15 августа 2011

Присоединитесь к подзапросу, и ваша таблица будет обновляться:

UPDATE employees x INNER JOIN (
    SELECT employeeId, newSalary FROM ....
) y ON x.employeeId=y.employeeId
SET x.salary=y.newSalary
1 голос
/ 15 августа 2011
update employees
inner join temptable
on employees.employeeid = temptable.employeeid
set employees.salary = temptable.newsalary
1 голос
/ 15 августа 2011
update employees, tempTable
set employees.salary=tempTable.newSalary
wnere employees.employeeId=tempTable.employeeId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...