MySQL中ON DUPLICATE KEY UPDATE使用

来源:互联网 发布:学cnc编程要先学什么 编辑:程序博客网 时间:2024/06/06 06:31

今天做判断插入用到了MySQL中ON DUPLICATE KEY UPDATE,现在Mark以下!

如果你想做到数据库中没有数据的话插入数据、有数据的话更新数据,那么你可以选择ON DUPLICATE KEY UPDATE。

ON DUPLICATE KEY UPDATE能够在UNIQUE索引或PRIMARY KEY存在的情况下对旧行执行UPDATE操作。

例如:如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. INSERT INTOtable (a,b,c) VALUES (1,2,3)ON DUPLICATE KEYUPDATE c = c + 1,b = b - 1; 
[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. UPDATE tableSET c = c + 1,b = b - 1 WHERE a = 1; 


例如:如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列):

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. INSERT INTOTABLE (a,c) VALUES (1,3),(1,7)ON DUPLICATE KEYUPDATE c = c + 1; 

执行后,c 的值会变为 4 (第二条与第一条重复, c 在原值上+1)。

[sql] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. INSERT INTOTABLE (a,c) VALUES (1,3),(1,7)ON DUPLICATE KEYUPDATE c = VALUES(c); 

执行后,c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7)。


注意:ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法

0 0
原创粉丝点击