mysql更新表时同时插入的问题

来源:互联网 发布:cnc数控编程软件下载 编辑:程序博客网 时间:2024/06/02 04:17

mysql更新表中的字段时,存在的字段更新,不存在的字段插入mysql表中,有三种方法实现:

1.update时select一下,有数据update,没数据insert ( ps:效率不高,没必要的操作。

2.使用replace into操作

replace into tbl_name(col_name, ...) values(...)

      操作已存在的数据时(根据主键和唯一索引判断),会先删掉原有数据,再插入一条。使用replace into操作的数据表必须具有主键或唯一索引,否则会直接插入数据。当表中即存在主键又存在唯一索引时,会将主键与唯一索引对应的数据删掉重新插入数据。如下图:

数据库表:

这里写图片描述
这里写图片描述

操作结果:
这里写图片描述
这里写图片描述

3.使用ON DUPLICATE KEY UPDATE。

INSERT INTO user_info (***,***,***) VALUES (?,?,?) ON DUPLICATE KEY UPDATE **= ?,**= ?;

      存在则使用后面的update更新,不存在则使用insert into。update与insert后面不能添加where语句,但是可以使用IF语句加上条件的判断充当where语句,如下:

INSERT INTO user_info (***,***,***) VALUES (?,?,?) ON DUPLICATE KEY UPDATE **= IF(判断条件,true时的值,false的值),**= IF(判断条件,true时的值,false的值);
0 0
原创粉丝点击