Mysql更新table1与table2比较

Posted

技术标签:

【中文标题】Mysql更新table1与table2比较【英文标题】:Mysql update table1 compare to table2 【发布时间】:2011-11-18 09:29:26 【问题描述】:

在我的 mysql 数据库中,我有 2 个表,两者都具有相同的字段。

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

例子:

表1

id|name|surname|id_customer|email

1|jon|jack|12|hello@me.com

表2

id_customer|姓名|姓氏|电子邮件

12| |jack|hello@me.com

查询必须更新 table2 在名称上添加“jon”

知道怎么做吗?

谢谢

【问题讨论】:

【参考方案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);

【讨论】:

【参考方案2】:
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子句。

【讨论】:

我认为您的查询应该从 - 'UPDATE table1, table2...'开始 这个查询似乎写得不好

以上是关于Mysql更新table1与table2比较的主要内容,如果未能解决你的问题,请参考以下文章

仅当与 table2 中的 column3 匹配时才更新 table1 中的 column1

SQL 更新加入 2 个表

使用 SQLAlchemy Core 更新连接表

从select语句更新MySQL中的两列

MySQL:通过其他表中的值更新列值

根据外键更新表的值