147 votos

¿Cómo puedo actualizar si existe, insertar si no (también conocido como "upsert" o "combinar") en MySQL?

¿Hay una manera fácil de INSERT una fila cuando no existe, o UPDATE si existe, mediante una consulta de MySQL?

187voto

chaos Puntos 69029

Yes, INSERT ... ON DUPLICATE KEY UPDATE. Por ejemplo:

INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X