10

我有一个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")

以前的值 en temp 丢失。为什么 ?

4

3 回答 3

27
于 2012-08-31T15:25:01.027 回答
4

因为它是一个REPLACE声明而不是一个UPDATE. 替换时,您将获得未指定的值作为默认列值。

更新允许您更改先前的值并在没有事先选择的情况下对该值进行操作 ( SET count = count+1)。它允许所有先前设置的值保持设置。这就是你想要做的。

于 2012-08-31T15:18:51.047 回答
2

http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE 的工作方式与 INSERT 完全相同,只是如果表中的旧行与 PRIMARY KEY 或 UNIQUE 索引的新行具有相同的值,则在插入新行之前删除旧行。

您是否尝试进行更新

于 2012-08-31T15:18:40.097 回答