"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo insertar o actualizar eficientemente filas basadas en dos condiciones en MySQL?

¿Cómo insertar o actualizar eficientemente filas basadas en dos condiciones en MySQL?

Publicado el 2025-06-14
Navegar:899

How Can I Efficiently INSERT or UPDATE a MySQL Row Based on Two Conditions?

solución:

La respuesta se encuentra en la sintaxis de la actualización de clave duplicada de MySQL. Esta potente característica permite una manipulación de datos eficiente al insertar una nueva fila si no existe una fila coincidente o actualización de la fila existente Si se viola una restricción de clave única.

para lograr el comportamiento deseado, la tabla debe tener una clave única definida (una clave compuesta en este caso) para las dos columnas ('nombre' y 'fechas'). Esta clave sirve como identificador para filas únicas en la tabla.

escenario de ejemplo:

Considere la siguiente estructura de la tabla: cree la tabla myching ( ID int Auto_Increment Clave primaria, nombre int no nulo, valores1 int no nulo, valores2 int no nulo, fechas de la fecha no nula, Clave única (nombre, fechas): esta línea es crucial );

Insertar una nueva fila con la siguiente declaración creará una nueva fila o actualizará una existente, dependiendo de la existencia de una fila con el mismo 'nombre' y 'fechas':

Inserte MyTing (Nombre, Valores1, Valores2, Fechas) Valores (777,1,1,1, '2015-07-11') en 1;

Resultado de ejemplo:

select * de mything; ---- ------ --------- --------- ------------ | ID | nombre | valores1 | valores2 | Fechas | ---- ------ --------- --------- ------------ | 1 | 777 | 1 | 4 | 2015-07-11 | | 2 | 778 | 1 | 1 | 2015-07-11 | ---- ------ --------- --------- ------------

create table myThing (
    id int auto_increment primary key,
    name int not null,
    values1 int not null,
    values2 int not null,
    dates date not null,
    unique key(name,dates) -- This line is crucial
);
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3