基于MySQL中存在的两个元素插入

时间:2011-02-17 14:51:47

标签: c# mysql exists

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

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

我的困境是我必须将数据库复制/导入到另一个数据库,并且由于eventID是主键而导致重复输入,并且每次自动添加新记录时都会更新。改变这不是一种选择。所以我想要做的只是插入数据库,如果我当前的deviceID +时间戳组合还不存在。

我发现了很多查询示例,但它们要么抛出语法问题,要么根本不需要工作。在伪代码中,这就是我正在寻找的东西..

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

1 个答案:

答案 0 :(得分:0)

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

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

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

请注意,只有在(deviceID,timestamp)

上有唯一索引时,这才有效