2013-04-18 79 views
0

我嘗試使用mysql替換下表。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添加或爲空。

但插入查詢工作。

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

我無法找到最新的問題。請幫幫我。

回答

2

你必須使用 「」 而不是在 「和」 替換查詢........

REPLACE INTO price SET ski_chalet_id = 43,month = '2013年4月1日',d_1 = 23

:REPLACE函數將工作,希望你不需要尋找其他功能。

0

不要REPLACE使用SET。對於REPLACE語法是相同INSERT

REPLACE INTO `price` (`ski_chalet_id`,`month`,`d_1`) VALUES ('43', '2013-04-01', '23'); 
0

要在REPLACESET(和UPDATE/INSERT)指定多個列,則必須用逗號將它們分開。您的查詢金額爲:

SET `ski_chalet_id` = (some boolean expression) 

改寫爲

SET `ski_chalet_id` = 43, `month` = '2013-04-01', `d_1` = 23