1

次の表でmysql置換を使用しようとしています。

CREATE TABLE price (
   id BIGINT UNSIGNED AUTO_INCREMENT, 
   ski_chalet_id BIGINT UNSIGNED NOT NULL, 
   month DATE NOT NULL, 
   d_1 DOUBLE(18, 2), 
   d_2 DOUBLE(18, 2), 
   d_3 DOUBLE(18, 2), 
   d_4 DOUBLE(18, 2), 
   d_5 DOUBLE(18, 2), 
   created_at DATETIME NOT NULL, 
   updated_at DATETIME NOT NULL, 
   UNIQUE INDEX fk_ski_chalet_price_ski_chalet_idx (ski_chalet_id, month), 
   INDEX ski_chalet_id_idx (ski_chalet_id), 
   PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8 ENGINE = InnoDB;

行が存在しない場合は行を追加し、行が存在する場合は更新します。だから私はそれを行うためにmysql REPLACEを使用しました。

REPLACE INTO  `price` SET `ski_chalet_id` = 43 and `month` = '2013-04-01' and `d_1` = 23

このクエリは成功です。ただし、すべての値を 00 および 0000-00-00 または null として追加します。

しかし、挿入クエリは機能しています。

INSERT INTO `price` (`ski_chalet_id`,`month`,`d_1`) VALUES ('34', '2013-04-01', '46');

何が問題なのかわかりません。私を助けてください。

4

3 に答える 3

2

置換クエリの「and」の代わりに「,」を使用する必要があります.......

priceセットに置換 ski_chalet_id= 43 、month= '2013-04-01' 、d_1= 23

: REPLACE 関数は、他の関数を探す必要がなくても機能します。

于 2013-04-18T06:20:25.620 に答える