先看一段SQL例子:

INSERT INTO M_USERS (USER_ID,USER_NAME) VALUES ('1','2') ON DUPLICATE KEY UPDATE USER_NAME='3'

与普通的 INSERT INTO 语句相比,在结尾处多了 ON DUPLICATE KEY UPDATE ,上例表示的含义是:
如果 USER_ID 是主键或者有唯一约束时,如果插入的 USER_ID 不存在(库中没有 USER_ID 为 1 ),则执行 INSERT INTO 语句,插入 USER_ID 为 1,USER_NAME 为 2,但是若是如果库中有 USER_ID 为 1 的, 则执行 UPDATE 操作,语句相当于

UPDATE M_USERS SET USER_NAME='2' WHERE USER_ID='1'

如果是有原始记录执行插入操作,则显示影响行数为 1
1.jpg
(此时库中 USER_ID = 1 , USER_NAME = 2)


如果是执行的更新操作,则显示影响行数为 2
2.jpg
(此时库中 USER_ID = 1 , USER_NAME = 3)

需要注意的是,这种语法是MYSQL特有的语法, 不是SQL的语法。


转载请注明出处(http://www.farquer.cn/archives/1001/)