我有一张有4个字段的table。
表:id(自动增量)、col1、col2、col3
有几行包含id、col1和col2的数据。
col3为空。
我想用值填充col3,在现有行中使用如下查询:
INSERT INTO table(id, col3)
VALUES
(1, 'value1'),
(2, 'value2'),
(3, 'value3'),
...
ON DUPLICATE KEY UPDATE
id = VALUES(id),
col3 = VALUES(col3);
但是我得到一个错误,因为col1和col2没有默认值。我只想更新col3,并保留其他列值。我该怎么办?
3条答案
按热度按时间jgwigjjp1#
我相信@lukasz szozda评论是解决这个问题的最佳方法。所以我会选择它作为解决方案。谢谢。
将col1、col2标记为可空。
tag5nh1u2#
您可以这样更新:
这将保留update语句中没有的字段的当前值。
我又看了一遍这个问题,似乎你的插入也需要col1和col2。你说它们没有默认值,所以我也会
为每个添加一个默认值
将它们标记为可空
在应用程序中强制使用这些参数。
所以您不能更改表结构,我的最终查询如下:
当字段没有默认值且不可为空时,insert查询必须包含该字段的值。所以问题不在查询的更新部分,而在插入部分。
67up9zun3#
您可以使用一个简单的update语句:
您还可以过滤所需的id以获得更好的性能