我想象这是一个简单的问题,但我认为我遇到了语法问题。
我有一个表,其中包含一个事件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)
答案 0 :(得分:0)
听起来你想做一个“upsert”。
在MySQL中,这称为“INSERT...ON DUPLICATE KEY UPDATE”:
INSERT INTO myTABLE (deviceID, timeStamp)
VALUES (deviceIDtoInsert, timestampToInsert)
ON DUPLICATE KEY UPDATE ...
请注意,只有在(deviceID,timestamp)
上有唯一索引时,这才有效