BeWithYou

胡搞的技术博客

  1. 首页
  2. 运维/工具
  3. MySQL更新和插入时忽略duplicate

MySQL更新和插入时忽略duplicate


今天批量更新表数据的时候遇到有duplicate key的问题,这些都是脏数据,不用处理。那么如何让UPDATE在遇到错误时,忽略本条操作,继续往下执行呢?

我们首先看下UPDATE的语法:

Single-table语法:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]

Multiple-table语法:

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]

当我们使用了IGNORE选项时,如果遇到了执行错误,则会忽略这一行,继续往下执行。

那么如果是插入时遇到重复的key呢?可以使用INSERT ... ON DUMPLICATE KEY UPDATE语法。这是MySQL特有的语法。

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;
回到顶部