2013-03-01 88 views
1

我已經做了很多的研究這一點,並具有以下想出了:插入對重複鍵更新,如果

INSERT INTO actives 
SELECT email, active_date 
FROM actives_ac 
ON DUPLICATE KEY UPDATE active_date = IF (
    active_date < VALUES(active_date), VALUES(active_date), active_date 
); 

導致,SQL Error (1136): Column count doesn't match value count at row 1

email字段VARCHAR(255)在兩個表中都是KEYUNIQUEactive_date是一個DATE字段。

我試圖插入一條記錄,如果它是新的活動表或更新記錄,如果actives_ac.active_date中的值比actives.active_date中已有的值更新。

+0

它告訴你所用表格的列數不相同。向我們展示您的數據庫結構 – DiMono 2013-03-01 15:15:33

+0

「活動」有多少個字段? – 2013-03-01 15:25:27

回答

0

它只是表示要插入的值的數量與表格上的總列數不匹配。嘗試是通過指定的值將被插入,例如列更加明確,

INSERT INTO actives (email, active_date) 
SELECT email, active_date 
FROM actives_ac 
..... 

注:之所以你正在做的,這是因爲你有被設置爲AUTO_INCREMENT編列,對不對?

+0

你有沒有試過上面的查詢? – 2013-03-01 16:04:15

+0

如果你爲'ID'傳入'NULL'值,查詢將會執行,例如,'INSERT INTO actives SELECT NULL,email,active_date ....' – 2013-03-01 16:05:08

+1

謝謝JW,這解決了我的錯誤。 – David 2013-03-02 12:36:30