INSERT IGNORE INTO
插入数据的策略:如果新插入的数据主键值已在原表存在:那么则不插入,也不报主键冲突的错误。如果主键值在原表不存在,那么则插入;
REPLACE INTO(注意 没有INSERT)
插入数据的策略: 如果新插入的数据和原表中数据发生主键冲突或者唯一约束冲突,则用新数据替换原有数据。如果不发生,则等同于INSERT INTO;
拓展使用方法:
感谢原作者:点击跳转
>
1. replace into tbl_name(col_name, …) values(…)
2. replace into tbl_name(col_name, …) select …
3. replace into tbl_name set col_name=value, …
第一种形式类似于insert into的用法,
第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。
>
第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
>
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。