重复键增量的mysql更新

时间:2014-11-10 17:59:54

标签: mysql sql

我试图将另一个表中的数据插入此表。如果该行存在,那么我希望它增加一个计数值。

这就是我所拥有的:

INSERT INTO bookmarks
SELECT Title, URL FROM tempt
ON DUPLICATE KEY UPDATE CountVal=CountVal+1;

bookmarks有更多列。两个表都有titleurl; url是主键。

更新2:

我得到了它的工作

insert into bookmarks (Title, URL)
SELECT Title, URL
from tempt
ON DUPLICATE KEY UPDATE CountVal=CountVal+1;

但我想知道这些数字。我在文件中使用加载数据将数据放入临时表中,然后我使用上面的代码更新实际表格,但数字不匹配,我想知道为什么会这样。

加载数据:受影响的行数为417。 0.08秒

插入:810行受影响。 0.16秒

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于两个表中的列号不同,因此您必须指定列的名称:

 INSERT INTO bookmarks (Title, URL) VALUES(
                                           SELECT Title, URL 
                                           FROM tempt
                                          )
 ON DUPLICATE KEY UPDATE CountVal=CountVal+1;

这将起作用 IF

  • 您将bookmarts表的标识字段设置为auto_increment
  • URLTitle字段在两个表中都以相同的方式定义
  • 书签表的其他列未设置为NOT NULL