2012-07-10 55 views
0

我有兩個表,一個Master和一個ExtraData。兩個表共享列FirstName, LastName, Gender and A_Id更新基於來自另一個表的聯接的MySQL空值

我正在處理的查詢應該比較兩個表和UPDATE任何NULL的A_Id在Master中使用A_Id在Extra中。

這樣做的最好方法是什麼?我可以比較CONCAT(FirstName, LastName, Gender),但我堅持如何更新基於JOIN的列。

回答

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)

+0

啊有趣的是,我從來沒有明白過使用。這比我想象的要簡單得多。謝謝! – citizenen 2012-07-10 16:04:01

+1

是的,'USING'是我命名主鍵的唯一動機,如下所示:student_id'而不是'students.id',因爲它使它變得如此簡單:-) – 2012-07-10 16:04:54

+1

+1雖然,由於我們不匹配在一個獨特的價值。 – 2012-07-10 16:25:55

相關問題