REPLACE或INSERT ...在DUPLICATE UPDATE上显示现有记录的条件

时间:2014-04-09 04:20:16

标签: mysql sql database

我有2个具有相同架构的数据库服务器。 基本上,我有一个crontab作业(每分钟)在数据库1到数据库2的最后2分钟内获取所有新的或更新的记录。

数据库2是一个Mysql服务器。 (数据库1不是mysql服务器。)

为了确保我拥有所有数据,我使用" replace-into"言。

REPLACE INTO myTable (ID, Data, CreateTime, UpdateTime) VALUES ....

通常,它运作良好。

然而,与数据库1的连接太多。有时,由于连接问题,提取需要一分钟,这会在下一分钟内被提取。在时间T中取出的数据批次在时间T + 1中的批次之后被放入数据库2中。因此,旧数据的记录会覆盖较新的数据。

我希望这些发生:

  1. 如果数据库2中不存在记录,请插入记录。
  2. 如果记录存在于数据库2中,则仅在 createTime> =现有createTime或updateTime> =现有updateTime时更新记录。 (*如果createTime和updateTime都与现有的相同,则可以覆盖当前记录。)
  3. 上面的替换可以重写为INSERT...ON DUPLICATE UPDATE,但我的主要问题是我需要一个where-condition来控制更新。

    提前致谢。

0 个答案:

没有答案