mysql - 仅当新值不为空时才在 DUPLICATE KEY UPDATE 上合并两个表

标签 mysql merge notnull

只有当新值不为空时,我才必须合并两个表并更新重复键。 我尝试了下面的代码但没有成功 谁能帮忙? 谢谢!

INSERT
INTO    table1
SELECT  * FROM    temp  
ON DUPLICATE KEY UPDATE
  table1.tel = coalesce(temp.tel,table1.tel),
  table1.fax = coalesce(temp.fax,table1.fax)

最佳答案

我认为您的问题可能是您引用更新子句中的值的方式。以下可能效果更好:

INSERT
INTO    table1
SELECT  * FROM    temp  
ON DUPLICATE KEY UPDATE
  table1.tel = coalesce(values(tel),tel),
  table1.fax = coalesce(values(fax),fax)

关于mysql - 仅当新值不为空时才在 DUPLICATE KEY UPDATE 上合并两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6358939/

相关文章:

mysql - 将 R 图保存到 Web 服务器

r - 按 R 中的列匹配 ID 追加列

xslt合并同名多个节点

mysql - CardDav 服务器和 MySQL 数据库之间的接口(interface)

mysql - 我无法访问 mysql 数据库中的所有表

java - 在 SQL Server 中更改列的数据类型时保留非空 - Java

java - 将约束添加到仅包含 Java 列表中的第一个对象的字段

c# - 为什么我不能将默认值分配给我的 notnull 泛型类型?

MySQL:如何构造给定的查询

git - Git 中的错误 merge 冲突解决方案。重试错误的提交,保留此后的更改吗?