【问题标题】:Bulk insert or update if 2 column of table already exists MySQL如果表的 2 列已经存在 MySQL,则批量插入或更新
【发布时间】:2020-03-09 13:21:14
【问题描述】:

我有一个没有主键的关系表:

ticket_id | type | value | code

我想用批量方法插入和更新这个表,更新的条件是如果ticket_idcode被注入重复数据,那么它将更新类型或值记录。我怎样才能做到这一点?

例如,我将收到这样的插入数据:

    [
      {
         "ticket_id":"1",
         "type":"name",
         "value":"Ben",
         "code":"person_name"
      },
      {
         "ticket_id":"1",
         "type":"phone",
         "value":"0812",
         "code":"person_phone"
      },
      {
         "ticket_id":"1",
         "type":"mail",
         "value":"ben@yours.com",
         "code":"person_mail"
      },
      {
         "ticket_id":"2",
         "type":"name",
         "value":"Jesse",
         "code":"person_name"
      },
      {
         "ticket_id":"2",
         "type":"phone",
         "value":"8272",
         "code":"person_phone"
      },
      {
         "ticket_id":"2",
         "type":"mail",
         "value":"jesse@mine.com",
         "code":"person_mail"
      }
   ]

然后更新数据:

   [
      {
         "ticket_id":"1",
         "type":"name",
         "value":"Joe",
         "code":"person_name"
      },
      {
         "ticket_id":"1",
         "type":"phone",
         "value":"9810",
         "code":"person_phone"
      },
      {
         "ticket_id":"1",
         "type":"mail",
         "value":"joe@mine.com",
         "code":"person_mail"
      },
      {
         "ticket_id":"2",
         "type":"name",
         "value":"Rose",
         "code":"person_name"
      },
      {
         "ticket_id":"2",
         "type":"phone",
         "value":"0992",
         "code":"person_phone"
      },
      {
         "ticket_id":"2",
         "type":"mail",
         "value":"rose@yours.com",
         "code":"person_mail"
      }
   ]

【问题讨论】:

  • INSERT....... On Duplicate UPDATE

标签: mysql sql sql-update sql-insert


【解决方案1】:

您可以使用 insert ... on duplicate key 语法 - 正如 RiggsFolly 评论的那样:

insert into mytable (ticket_id, type, value, code)
values(:ticket_id, :type, :value, :code)
on duplicate key update type = values(type), value = values(value)

为此,您需要对 (ticket_id, code) 设置唯一约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多