给定的
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);是一个标准的插入表单,如果某些数据丢失了,如何插入多行?
例如:
INSERT INTO tbl_name (a,b,c) VALUES(1,'missing','missing'),(4,'missing',6),(7,8,9);请注意,表中可能包含“缺失”值的数据,并且不应使用"null“或其他方式覆盖。
发布于 2017-06-16 20:06:05
如果您想要在insert中省略该列的相同行为,请使用default
INSERT INTO tbl VALUES (1,default,default),(4,default,6)...如果您想要空值,只需使用null
INSERT INTO tbl VALUES (1,null,null),(4,null,6)...发布于 2017-06-16 20:03:09
在这种情况下,您可以插入null而不是missing:
INSERT INTO tbl_name (a,b,c) VALUES(1,null,null),(4,null,6),(7,8,9);仅当目标字段可为空时,此解决方案才有效,否则将抛出错误
发布于 2017-06-16 21:01:41
首先,关于您指定的内容:
注意,表可能包含“缺失”值的数据,并且不应使用"null“或其他值覆盖它。
在这方面,如果只使用'INSERT‘语句,那么一些数据是否已经以某种形式存在并不重要,因为’INSERT‘语句插入(!)新记录,不更新记录。
更多的是:假设您有一个id列作为主键列。如果您尝试使用与现有记录相同的'id‘复制一个记录,则会出现错误:“INSERT key...”。
现在,假设id不是主键值。然后,当您尝试使用与现有记录相同的“id”插入新记录时,新记录将被插入为INSERT。
也就是说,您可以使用UPDATE来更新现有记录。为了不覆盖现有的值,您可以在UPDATE语句中省略它们。
示例:包含列id、fname和lname的表users
id fname lname
1 John Smith
2 Sam StevensonUPDATE语句:
UPDATE users
SET fname='Helen'
WHERE id = 2;结果:
id fname lname
1 John Smith
2 Helen Stevensonhttps://stackoverflow.com/questions/44588762
复制相似问题