2012-04-17 24 views
0

我有2個表具有相同的列。 例如2個相同的表,更新表1中的數據存在的第二個表

table 1 
id 
name 
height 
weight 

table 2 
id 
name 
height 
weight 

數據是表2是完整的。但是在表1中,只有一些數據存在,其餘列是空的。例如:

  table 1 table 2 
id  4   4 
name  (empty) salman 
height 5'11"  5'9" 
weight (empyy) 65kg 

我想一個腳本,這將讓我從表1的值更新表2中,但只有在它的存在。在表1爲空的地方,我想保留表2中已經存在的數據。

我已經嘗試了各種方法,但都需要多個查詢並且很長很忙。我想知道是否有更簡單的方法來完成這項工作?最好在單個查詢中?

謝謝

+0

當你說「這將允許我使用表1中的值更新表2「,它是SQL UPDATE或直接使用單詞'update',可以b e SQL INSERT? – 2012-04-17 10:30:26

+0

表1中的記錄太多了嗎?你想table1是表2的精確副本嗎? – 2012-04-17 10:44:41

回答

0

您可以通過連接2個表,然後使用CASE關鍵字來有條件地更新字段嘗試:

UPDATE table2 t2 INNER JOIN table1 t1 USING (id) 
SET 
t2.name = CASE WHEN (t1.name IS NULL) THEN t2.name ELSE t1.name END 
t2.height= CASE WHEN (t1.height IS NULL) THEN t2.height ELSE t1.height END 
t2.weight = CASE WHEN (t1.weight IS NULL) THEN t2.weight ELSE t1.weight END 

http://dev.mysql.com/doc/refman/5.5/en/case-statement.html

http://dev.mysql.com/doc/refman/5.5/en/update.html

相關問題