sql语句:
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
表t1中,存在(a是唯一索引),则上述sql语句等同于
if(表中不存a=1的数据) :
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
else
UPDATE t1 SET c=c+1 WHERE a=1;
表t1中,存在(a是唯一索引,b是唯一索引),则上述sql语句等同于
if(表中不存在(a=1 and b=2) 的数据) :
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
else
UPDATE t1 SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
对于ON DUPLICATE KEY UPDATE
语句的返回值
1:插入了一个新行
2: 更新已存在的数据
0: 已存在的数据值就是当前要更新的值