我有一个 mysql 表
CREATE TABLE `gfs` (
`localidad` varchar(20),
`fecha` datetime,
`pp` float(8,4) NOT NULL default '0.0000',
`temp` float(8,4) NOT NULL default '0.0000',
PRIMARY KEY (`localidad`,`fecha`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
当我尝试用这个更新字段时
REPLACE INTO gfs(localidad,fecha,pp) VALUES ("some_place","2012-08-05 02:00","1.6")
之前的温度值会丢失。为什么 ?
正如下面记录的REPLACE Syntax其他人已经提到过:
REPLACE是 MySQL 对 SQL 标准的扩展。它要么插入,要么deletes和插入物。对于标准 SQL 的另一个 MySQL 扩展(插入或更新),请参阅第 13.2.5.3 节,“INSERT ... ON DUPLICATE KEY UPDATE Syntax”.
该手册继续解释:
所有列的值均取自中指定的值REPLACE
陈述。任何缺失的列都将设置为其默认值,就像发生的情况一样INSERT
。您不能引用当前行中的值并在新行中使用它们。
因此,您想要:
INSERT INTO gfs (localidad, fecha, pp)
VALUES ('some_place', '2012-08-05 02:00', 1.6)
ON DUPLICATE KEY UPDATE pp=VALUES(pp);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)