REPLACE INTO 不存在插入,存在删除旧的数据,插入一条新数据,返回新插入的自动编号:
replace into:和 ignore 以及 duplicate 截然不同,不存在插入,存在则删除旧的,插入新的。不会保留之前的制动编号。例如:旧数据自动编号为1,replace into 后将1删除,插入一条新的,返回的自动编号为2。
REPLACE INTO `mytab`(`col1`,`col2`) VALUES ('val1','val2');
INSERT IGNORE 不存在插入,存在忽略,忽略时不会返回自动编号:
insert ignore:不存在插入,存在忽略,但会废弃一个自动递增数。例如表里已经存在一条数据,该数据自动编号为1,ignore 后相当于插入了一条数据,自动编号为2,但是数据已经存在需要忽略,因此需要将这条数据删除,那么再插入一条数的自动编号将为3。
INSERT IGNORE `mytab`(`col1`,`col2`) VALUES ('val1','val2');
ON DUPLICATE 不存在插入,存在忽略,忽略时可以返回自动编号:
insert on duplicate:和 ignore 相同,不存在插入,存在忽略。不同地方:若数据已存在,duplicate 可以更新指定字段,并且能返回自动编号。
INSERT INTO `mytab`(`col1`,`col2`) VALUES ('val1','val2') ON DUPLICATE KEY UPDATE val2 = time();