MySQL中 insert into ... on duplicate key update ... values() 的使用笔记

**说明:
1. on duplicate key update 含义:
  1)如果在INSERT语句末尾指定了 on duplicate key update,
      并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,
      则在出现重复值的行执行UPDATE;
  2)如果不会导致唯一值列重复的问题,则插入新行。
 
2. values(col_name)函数只是取当前插入语句中的插入值,并没有累加功能。
  如:count = values(count) 取前面 insert into 中的 count 值,并更新
        当有多条记录冲突,需要插入时,前面的更新值都被最后一条记录覆盖,
        所以呈现出取最后一条更新的现象。
  如:count = count + values(count) 依然取前面 insert into 中的 count 值,
        并与原记录值相加后更新回数据库,这样,当多条记录冲突需要插入时,
        就实现了不断累加更新的现象。
 
注:insert into ... on duplicate key update ... values() 这个语句
    尽管在冲突时执行了更新,并没有插入,但是发现依然会占用 id 序号(自增),
    出现很多丢失的 id 值

 

你可能感兴趣的:(MySql)