在MySQL中实现插入或更新操作(类似Oracle的merg…

2018-06-17 23:01:47来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句:

更新一个字段:

INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA)


更新多个字段:

INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA),columnB=IF(columnC>0,1,columnB),columnC=IF(columnA>0,1,columnC);

当需要引用字段新值时,可以使用VALUES(columnA),比如

INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,VALUES(columnB),columnA)

此时,就会将columnA的值更新为2。

由于MySQL对更新为原相同值有进行优化,所以更新为原相同值时不会真正对字段进行更新操作,不存在性能问题。

更多相关内容请访问以下英文站点:

https://thewebfellas.com/blog/conditional-duplicate-key-updates-with-mysql

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MySql 里的IFNULL、NULLIF和ISNULL用法

下一篇:Mysql5.7服务下载安装