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 インデックスの新しい行と同じ値を持つ場合、新しい行が挿入される前に古い行が削除される点が異なります。

代わりにUPDATEを実行しようとしていますか?

于 2012-08-31T15:18:40.097 に答える