根据另一个表的连接更新MySQL NULL值

时间:2012-07-10 15:56:42

标签: mysql

我有两个表,一个Master和一个ExtraData。两个表共享列FirstName, LastName, Gender and A_Id

我正在处理的查询应使用Extra中的UPDATE比较两个表和A_Id Master中A_Id的任何NULL值。

最好的方法是什么?我可以比较CONCAT(FirstName, LastName, Gender),但我仍然坚持如何根据JOIN更新列。

1 个答案:

答案 0 :(得分:4)

您可以在连接中使用许多条件,然后只需将一个源表中的列设置为另一个表中列的值:

UPDATE Master 
JOIN ExtraData 
  ON Master.FirstName = ExtraData.FirstName
  AND Master.LastName = ExtraData.LastName
  AND Master.Gender = ExtraData.Gender
SET Master.A_Id = ExtraData.A_Id 
WHERE Master.A_Id IS NULL

请注意,JOIN条件可以更简洁(因为列的名称相同):JOIN ExtraData USING (FirstName, LastName, Gender)