MySQL插入缺少某些值的多行

MySQL插入缺少某些值的多行,mysql,Mysql,给定 是插入的标准表单,如果缺少某些数据,如何插入多行 e、 g 注意,表中可能包含“缺失”值的数据,不应使用“null”或其他内容覆盖该表。在这种情况下,您可以插入null,而不是缺失的: INSERT INTO tbl_name (a,b,c) VALUES(1,'missing','missing'),(4,'missing',6),(7,8,9); 仅当目标字段可为空时,此解决方案才有效;如果您希望获得与插入使用默认值中省略列相同的行为,则此解决方案将抛出错误: INSERT INTO

给定

是插入的标准表单,如果缺少某些数据,如何插入多行

e、 g


注意,表中可能包含“缺失”值的数据,不应使用“null”或其他内容覆盖该表。

在这种情况下,您可以插入
null
,而不是
缺失的

INSERT INTO tbl_name (a,b,c) VALUES(1,'missing','missing'),(4,'missing',6),(7,8,9);

仅当目标字段可为空时,此解决方案才有效;如果您希望获得与插入使用
默认值中省略列相同的行为,则此解决方案将抛出错误:

INSERT INTO tbl_name (a,b,c) VALUES(1,null,null),(4,null,6),(7,8,9);
如果需要空值,只需使用
null

INSERT INTO tbl VALUES (1,default,default),(4,default,6)...

首先,关于您指定的内容:

注意,表可能包含“缺少”值的数据,并且 不应被“null”或其他内容覆盖

在这方面,如果只使用“INSERT”语句,那么某些数据是否已经以某种形式存在并不重要,因为“INSERT”语句插入(!)条新记录,不会更新记录

更多:假设您有一个
id
列作为主键列。如果尝试插入与现有记录“id”相同的记录,则会出现错误:“重复键…”

现在,假设
id
不是主键值。然后,当您尝试插入一条“id”与现有记录相同的新记录时,新记录将作为副本插入

也就是说,您可以使用
UPDATE
来更新现有记录。为了不覆盖现有值,您可以在
UPDATE
语句中省略它们

示例:带有列
id
fname
lname
的表
users

INSERT INTO tbl VALUES (1,null,null),(4,null,6)...
更新
语句:

id   fname   lname
1    John    Smith
2    Sam     Stevenson
结果:

UPDATE users
SET fname='Helen'
WHERE id = 2;

插入
null
而不是字符串
'missing'
很抱歉,很晚才注意到,但是表数据可能已经存在,不应该被“null”覆盖。您的
a
列是主键列吗?是自动递增的吗?是的,是id,但“在重复密钥更新时”将解决此问题。例如,我的表可能已在“缺少”单元格中包含数据,不应使用null覆盖。有什么建议吗?Vatev,插入默认值会生成错误:一般错误:1366不正确的整数值:第1行“打开\关闭\子项”列的“默认值”。原因可能是什么?您是否在
default
'default'
)周围加了引号?如果是,请将其移除。
UPDATE users
SET fname='Helen'
WHERE id = 2;
id   fname   lname
1    John    Smith
2    Helen   Stevenson