sql >> Base de Datos >  >> RDS >> Mysql

¿Crear si no existe una entrada, de lo contrario, actualizar?

Muchos desarrolladores aún ejecutan una consulta para verificar si un campo está presente en una tabla y luego ejecutan una consulta de inserción o actualización de acuerdo con el resultado de la primera consulta. Intente usar la sintaxis ON DUPLICATE KEY, esto es mucho más rápido y mejor. luego ejecutando 2 consultas. Se puede encontrar más información aquí

si desea mantener el mismo valor para c, puede hacer una actualización con el mismo valor

la diferencia entre 'reemplazar' y 'en clave duplicada':

si su tabla no tiene una clave principal o una clave única, la sustitución no tiene ningún sentido.

También puede utilizar los VALUES función para evitar tener que especificar los valores reales dos veces. P.ej. en lugar de

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;

puedes usar

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

Donde VALUES(c) evaluará al valor especificado previamente (6).