1.当表中已经存在大量数据,插入的新数据可能重复,对于重复的数据要忽略掉该怎么办?
答:用INSERT IGNORE语句搞定,例如:
- INSERT IGNORE INTO table VALUES (1, 1), (1, 2);
2.如果原表中没有记录就插入一条记录,如果有,就更新其中的某个字段怎么写最简单?
答:用INSERT INTO ... ON DUPLICATE KEY UPDATE搞定,例如:
- INSERT INTO table (a,b,c) VALUES (4,5,1) ON DUPLICATE KEY UPDATE c=c+1;
3.如果字段是not null,现在插入的数据中含有null怎么办?
答:如果不打算清洗数据就可以用批量插入语句来搞定,因为mysql在单条插入时会校验插入的值,所以不能用单条插入。如下语句会报错:
- INSERT INTO table (a, b) VALUES (1, NULL);
但如果改成批量插入就不会报错了:
- INSERT INTO table (a, b) VALUES (1, NULL), (1, 0);
如果b字段是字符串,就会插入一个(""),如果是数值,就会插入0,mysql会自动转换。
本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1086123,如需转载请自行联系原作者