每个键值插入的MySql增量字段以及处理重复项

时间:2014-09-07 13:33:43

标签: javascript mysql sql node.js

背景

我有一个包含两列的表,一个是键,word而另一个不是键,它是instances。 我想将每个单词插入一个新行,并将其instances字段增加1。 现在,如果现在插入的单词已经存在,则不应该重复,但它的instances字段应该递增。

示例

  1. 表格在开始时为空
  2. 插入"你好"并将其instances增加1。
  3. 插入" world"并将其instances增加1。
  4. 插入"你好"再次将其instances增加1。
  5. 所以现在表格看起来像这样:

    hello   2
    world   1
    

    我尝试过:

    MySql_Connection.query("
    
        INSERT INTO `my_database`.my_table 
        (`word`) VALUES ('"+ word_to_insert +"') 
        UPDATE  `instances` = `instances` + 1 
        ON DUPLICATE KEY `instances` = `instances` + 1
    
    ");
    

    收到语法错误

1 个答案:

答案 0 :(得分:1)

你的陈述应该是

MySql_Connection.query("

    INSERT INTO `my_database`.my_table 
    (`word`) VALUES ('"+ word_to_insert +"') 
    ON DUPLICATE KEY UPDATE `instances` = `instances` + 1

");

代替。

您也应该为instances列提供DEFAULT值,以便在插入新单词时在实例列中获取1的值。

CREATE TABLE my_table (
    word VARCHAR(100) NOT NULL PRIMARY KEY,
    instances INT NOT NULL DEFAULT 1
);

Demo