Al sincronizar tablas o bases de datos, algunas veces es útil tener una forma para actualizar una fila si ya hay una entrada para una clave.

Utilizando la sintaxis de MySQL, ON DUPLICATE KEY UPDATE es posible insertar una fila, si esta no existe, o actualizarla si es que ya existe:

INSERT INTO tabla1 (
    id,
    text,
    sync_time
) VALUES  (
    1,
    'new',
    UNIX_TIMESTAMP()
) ON DUPLICATE KEY UPDATE
    text        = VALUES(text),
    sync_time   = VALUES(sync_time)

Para actualizar tabla1 con todo los datos de tabla2, se puede hacer con una sola consulta sin necesidad de programar ninguna lógica:

INSERT INTO tabla1 (id, text, sync_time)
(SELECT id, text, sync_time FROM tabla2)
ON DUPLICATE KEY UPDATE
    text        = VALUES(text),
    sync_time   = VALUES(sync_time)

Vía: Code Spatter