2011-11-18 128 views
0

在我的MySQL数据库我有两个表中有两个相同的字段。Mysql更新table1与表2比较

我需要更新table2中的所有记录,其中table1具有相同的id_customer且字段不为空。

例子:

table1的

ID |名称|姓| id_customer |电子邮件

1|jon|jack|12|[email protected]

表2

id_customer | name |姓|电子邮件

12 | |jack|[email protected]

查询必须更新表2加入“乔恩”上的名字

任何想法如何?

谢谢

回答

1

尝试这一个 -

UPDATE table1 t1 
    JOIN table2 t2 
    ON t1.customer_id = t2.customer_id 
SET 
    t2.name = IF(t2.name IS NULL OR t2.name = '', t1.name, t2.name), 
    t2.email = IF(t2.email IS NULL OR t2.email = '', t1.email, t2.email), 
    t2.sur_name = IF(t2.sur_name IS NULL OR t2.sur_name = '', t1.sur_name, t2.sur_name); 
0
update table2 
set table2.name = table1.name, 
table2.email = table1.email, 
table2.sur_name = table1.sur_name 
where table2.customer_id = table1.customer_id 

我猜它可能是更好的投身于CUSTOMER_ID,如果是两个表中可用的(因为它是例子)。此外,如果我们需要更新table1的基础table1,那么我们是否可以更新所有字段,如果是,则执行上面的查询,否则您可以看看CASE子句。

+1

我觉得您的查询应该开始 - “更新表1,表2 ......” – Devart

+0

此查询不似是写得很好 – stefano

+0

UPDATE表1,表2是SET加工 – stefano