方案一 : REPLACE INTO
根据表主键primary key或唯一索引unique进行插入数据,当主键和唯一索引有一个存在时,则会删除原来的旧数据,重新插入新数据(相当于更新).
有如下三种用法:
REPLACE INTO table_name
( col_name
, ...) VALUES( 'value', ... );
REPLACE INTO table_name
( col_name
, ...) SELECT col_name
, ... from table_name where ...;
REPLACE INTO table_name
SET col_name='value', ... ;
方案二:INSERT IGNORE INTO
根据表主键primary key或唯一索引unique进行插入数据,当主键和唯一索引有一个存在时忽略,执行后返回0,否则正常插入.
INSERT IGNORE INTO table_name
( col_name
, ...) VALUES( 'value', ... );
方案三: ON DUPLICATE KEY
当表主键primary key或唯一索引unique出现重复时执行更新,否则插入.语法如下.
INSERT INTO table_name
( col_name
, ... ) VALUES( value
, ... ) ON DUPLICATE KEY UPDATE col_name
= 'value',...;
方案四: INSET IF NOT EXISTS
这种情况适合插入的数据字段没有primary key或唯一索引unique.语法如下.
INSERT INTO table_name
( col_name
, ... ) SELECT ( col_name
, ... ) FROM table_name
WHERE NOT EXISTS (SELECT col_name
from table_name
where ...);