含义是:
mysql中的存在这条数据就就更新,不存在就插入新增,,通过主键索引区分
INSERT INTO t_name ( c1, c2, c3 )
VALUES
( 1, '1', '1')
ON DUPLICATE KEY UPDATE
c2 = '2';
insert into gha_tm_mid_course_user(OPER,OPTIME,UPDATOR,UPDATETIME,DEPT_ID,TRAINING_ID,COURSE_ID,USER_ID,IS_SELF_STUDY,IS_TRAINING,SELF_COURSE_STATE,TRAINING_COURSE_STATE,HOURS,SCORE)
values (#{oper},#{optime},#{updator},#{updatetime},#{deptId},#{trainingId},#{courseId},#{userId},#{isSelfStudy},#{isTraining},#{selfCourseState},#{trainingCourseState},#{hours},#{score})
on duplicate key update HOURS = values(HOURS), SCORE = values(SCORE), TRAINING_COURSE_STATE = values(TRAINING_COURSE_STATE),SELF_COURSE_STATE = values(SELF_COURSE_STATE),IS_TRAINING = values(IS_TRAINING),
IS_SELF_STUDY = values(IS_SELF_STUDY), UPDATOR = values(UPDATOR), UPDATETIME = values(UPDATETIME)
总结:
1、mysql的存在就更新不存在就插入可由on duplicate key update语法实现;
2、不过只会检查添加列中有没有匹配到主键id和唯一索引的重复项;
3、如果有重复项会在on duplicate key update后进行修改指定的字段和内容;
4、所涉及的唯一索引也是可以修改的;