【问题标题】:MySql increment field for each key value insertion and handle duplicates as wellMySql 为每个键值插入增加字段并处理重复项
【发布时间】:2014-09-07 22:10:00
【问题描述】:

背景

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

示例

  1. 表在开始时是空的
  2. 插入单词“hello”并将 instances 加 1。
  3. 插入单词“world”并将 instances 加 1。
  4. 再次插入单词“hello”并将 instances 加 1。

所以现在表格看起来像这样:

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

");

出现语法错误

【问题讨论】:

  • 发布语法错误,那是什么语言?
  • 我认为他是说您应该添加正确的错误,该语言正在打印,例如 mysql-a7657-error: syntax error 或类似的东西。关于语言,你只为mysql问题添加了标签,但你在这里也使用了一种编程语言:MySql_Connection.query(所以...
  • 顺便说一句,您的错误是因为您将插入命令与更新命令混合在一起。在插入命令之后分隔或加分号;,如果语言支持,它将运行...

标签: javascript mysql sql node.js


【解决方案1】:

你的陈述应该是

MySql_Connection.query("

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

");

改为。

您也应该为您的instances 列提供一个默认值,以便在插入新单词时在您的实例列中获得1 的值。

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

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多