MySQL:从另一个表中具有匹配键的行更新表中的行

时间:2015-10-26 23:35:54

标签: mysql

我有一个包含现有数据的表users,我将更新的数据上传到临时表users_temp

我正在尝试创建两个查询,一个用于更新name中的department_idusers行以及来自匹配users_temp的{​​{1}}的数据。

另一个用于移除idusers中没有匹配id的行。

请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以通过在更新中添加联接来执行此操作。

UPDATE users u 
INNER JOIN users_temp ut on u.id = ut.id //or whatever the matching fields are
SET u.name = ut.name, u.department_id = ut.department_id;

我确定有人会为第二个查询提供更有效的示例,但这可以解决问题:

Delete all rows which has no id existing in another table

答案 1 :(得分:1)

update users
inner join users_temp using (id)
set users.name = users_temp.name,
users.department_id = users_temp.department_id

delete from users
where not exists (select * from users_temp where users_temp.id = users.id)