插入重复键更新if

时间:2013-03-01 15:14:28

标签: mysql sql sql-insert

我已就此进行了大量研究,并得出以下结论:

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_dateDATE字段。

我正在尝试插入记录,如果它在actives表中是新的,或者如果actives_ac.active_date中的值比actives.active_date中已有的值更新,则更新记录。

1 个答案:

答案 0 :(得分:0)

它只是意味着您要插入的值的数量与表中的总列数不匹配。通过指定要插入值的列来尝试更明确,例如,

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

注意:您这样做的原因是因为您有一个设置为AUTO_INCREMENT的列,对吧?