是否可以使用具有多个字段的表中的ON DUPLICATE KEY UPDATE来仅更新单个字段?
如果我有一个包含三个字段的表;键,猫,狗,其中键是主键,则可以更新重复键上的记录,仅更改一个字段(以我的示例为例cats
),而无需更改其他非关键字段(dogs
)中的值。这是dogs
在插入时不知道来自数据库外部的值的值(即,我有一个变量持有cats值,但没有一个持有dogs值)
INSERT INTO `myTable` (`key`,`cats`) VALUES('someKey1','Manx') ON DUPLICATE KEY UPDATE `cats` = 'Manx';
现在,当我运行类似这样的命令并且表中已经存在的键dogs
设置为NULL时,即使它先前具有一个值。
戈登是对的,它不符合我的描述。如果看到这种情况,则不是由ON DUPLICATE UPDATE语句引起的,而是由其他原因引起的。这是证明:
CREATE TABLE IF NOT EXISTS `myTable` (
`key` varchar(20) NOT NULL default '',
`cats` varchar(20) default NULL,
`dogs` varchar(20) default NULL,
PRIMARY KEY (`key`)
)
运行
INSERT INTO `myTable` (`key`, `cats`, `dogs`) VALUES
('someKey1', NULL, 'jack-russell');
然后跑
INSERT INTO `myTable` (`key`,`cats`) VALUES
('someKey1','Manx') ON DUPLICATE KEY UPDATE `cats` = 'manx';
然后检查表
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句