【问题标题】:MySQL: INSERT IGNORE or ON DUPLICATE KEY UPDATE with checking multiple and not unique columnsMySQL:INSERT IGNORE 或 ON DUPLICATE KEY UPDATE 检查多个而不是唯一的列
【发布时间】:2011-08-11 12:14:08
【问题描述】:

如果存在包含特定值的行,我想插入行,如果不更新它。

具体来说:

数据库中存在user_id=5, user_zip=12345, distance=600 列。

如果我尝试插入 user_id=5, user_zip=12345, distance=700 它应该只更新 distance

但我尝试插入 user_id=5, user_zip=67890, distance=800 它应该插入一个新行。

我无法定义 user_zipdistance 列唯一,因此我可以使用重复键更新。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我认为您误解了ON DUPLICATE KEY UPDATE 的工作原理。在(user_id, user_zip) 上具有唯一约束,这应该可以工作:

    INSERT INTO yourTable (user_id, user_zip, distance) VALUES (5,12345,600)
    ON DUPLICATE KEY UPDATE distance=600;
    

    您不必定义 user_zip 唯一(这就是我理解您的问题的方式),只需 user_iduser_zip 的组合。因此,您仍然可以有 2 行或更多行具有相同的 user_id,只是 user_zip 无法在这些行上匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-07
      • 2023-02-06
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多