薛定谔的风口猪

站在巨人的肩膀上学习,猪都能看得很远

Insert or Update操作,MySQL

如果需要执行操作如:“插入一行记录,若存在,则更新”的操作,在MySQL中,不需要使用Exists也不需要分两次语句执行,可以直接使用如下语句:

 INSERT INTO table1 (user, auth) VALUES ('user1', 1) ON DUPLICATE KEY UPDATE auth = 1;

上面的语句达到的效果是往table1里面插入一条记录,给user1 1的权限,若存在主键或者唯一索引冲突,则更新权限值为1。

注:这语法不是标准SQL语法,所以仅适用于MySQL ,详情参看:https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

若用于JDBC, 而替换的数据不是像上面一个常数值,而是由变量决定,SQL可以如下:

INSERT INTO mytable VALUES (?, ?, ?, ?)
ON DUPLICATE KEY UPDATE `col1`=values(col1), 
                        `col2`=values(col2), 
                        `col3`=values(col3), 
                        `col4`=values(col4);