【问题标题】:Insert based on two elements existing in a row MySQL基于行中存在的两个元素插入 MySQL
【发布时间】:2011-02-17 14:51:46
【问题描述】:

我想这是一个简单的问题,但我认为我遇到了语法问题。

我有一个表,其中有一个事件 ID 作为主键 (eventID),一个设备 ID 是触发事件的设备 ID,以及事件触发时间的时间戳。我正在通过 C# 和命令行处理 mySQL(5.1) 元素。

我的困境是我必须将数据库复制/导入到另一个数据库,并且由于 eventID 是主键并且每次自动添加新记录时都会更新它,因此我得到了重复的条目。改变那不是一种选择。所以我想做的只是在我当前的设备ID+时间戳组合不存在的情况下插入数据库。

我找到了很多查询示例,但它们要么引发语法问题,要么根本无法按需要工作。在伪代码中,这就是我正在寻找的......

IF timestampToInsert EXISTS WHERE deviceIDtoInsert ALSO EXISTS ON SAME ROW
     UPDATE ROW
ELSE
     INSERT INTO myTABLE (deviceID, timeStamp) VALUES (deviceIDtoInsert, timestampToInsert)

【问题讨论】:

    标签: c# mysql exists


    【解决方案1】:

    听起来你想做一个“upsert”。

    在 MySQL 中,这称为“INSERT...ON DUPLICATE KEY UPDATE”:

    INSERT INTO myTABLE (deviceID, timeStamp)
    VALUES (deviceIDtoInsert, timestampToInsert)
    ON DUPLICATE KEY UPDATE ...
    

    请注意,这只有在 (deviceID,timestamp) 上有唯一索引时才有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      相关资源
      最近更新 更多