-
存在即更新,不存在即插入。
insert into 表名(字段1,字段2) VALUES(值1,值2)
ON DUPLICATE KEY UPDATE username=值3
前提是插入字段中,必须有字段或者字段组合 为主键或者唯一,当插入时,数据库会判断是否存在,如果存在,则运行update后的操作。如果不存在则运行on duplicate之前的插入操作。
这种方式比较常用,比如需要增加某个任务,和原有用户表挂钩,新表中每次都要判定是否该用户已生成,没有生成则插入,生成则更新,与其用代码逻辑实现,不如用这种方式。
从返回结果可知,当更新时,并且确实更新了数据时,操作条数为2。当插入时,操作条数为1
批量
INSERT INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`) VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400003','true','false')
ON DUPLICATE KEY UPDATE `累积流量`='false',`标况累积流量`='true';
-
存在则删除而后插入,不存在则插入
REPLACE INTO 表名(字段1,字段2)
VALUES(值A,值B);
判定条件与第一方式相同,区别是如果存在就先删除而后插入。一般用作重制某条数据,因为此操作可以将该条数据的其他字段一并清除。
批量
REPLACE INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`)
VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400003','true','false')
-
存在则忽略,不存在插入
INSERT IGNORE INTO 表名(字段1,字段2)
VALUES(值A,值B);
判定条件与第一方式相同。存在忽略时会报警告
批量
INSERT IGNORE INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`) VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400011','true','false')