2013-03-01 93 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