0

我有 2 个具有相同列的表。例如

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中已经存在的数据。

我尝试了各种方法,但都需要多次查询,而且冗长而忙碌。我想知道是否有更简单的方法来完成这项工作?最好在单个查询中?

谢谢

4

1 回答 1

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

于 2012-04-17T10:18:38.747 回答