mysql:
ON DUPLICATE KEY UPDATE(不存在则插入,存在则更新)
mysql语法支持如果数据存在则更新,不存在则插入,首先判断数据存在还是不存在的那个字段要设置成unique索引。
语法:
INSERT INTO 表名(唯一索引列, 列2, 列3) VALUE(值1, 值2, 值3) ON DUPLICATE KEY UPDATE 列=值, 列=值
REPLACE INTO (不存在则插入,存在先删除,后插入)
REPLACE INTO 主要作用类似 INSERT 插入操作。主要的区别是 REPLACE INTO 会根据主键或者唯一索引检查数据是否存在,如果存在就先删除再更新。
语法:
REPLACE INTO 表名称(列1, 列2, 列3) VALUES(值1, 值2, 值3)
IGNORE
这个是根据插入表的主键和唯一索引去匹配的,如果当前插入的记录存在则跳过不插入。
示例:
INSERT IGNORE INTO `user` ('phone') VALUES ('18888888888’);
INSERT……SELECT……WHERE NOT EXISTS
NOTE:根据查询条件判断是否已经有对应的值,有的话跳过,没有的话执行插入,随便想查什么就查什么,这个用得最多。
PostgreSQL
INSERT ON CONFLICT do update set …..不存在则插入,存在则更新
insert into test values (1,'test',now()) on conflict (id) do update set info=excluded.info,crt_time=excluded.crt_time;
INSERT ON CONFLICT do nothing
不存在则插入,存在则直接返回(不做任何处理)
insert into test values (1,'hello digoal',now()) on conflict (id) do nothing;