"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 actualizo valores vacíos en una tabla en función de datos de otras filas con el mismo nombre?

¿Cómo actualizo valores vacíos en una tabla en función de datos de otras filas con el mismo nombre?

Publicado el 2024-11-16
Navegar:142

How do I update empty values in a table based on data from other rows with the same name?

Copiar datos entre filas en una tabla

En la gestión de bases de datos, a menudo es necesario actualizar filas en función de los datos de otras filas dentro de la tabla. misma mesa. Considere una tabla con las columnas ID, NOMBRE y VALOR que contiene valores de NOMBRE duplicados, como se muestra a continuación:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |         |
 4   |   Test    |         |
 1   |   Test3   |  VALUE3 |

Supongamos que queremos actualizar los campos de VALOR vacíos en filas con valores de NOMBRE duplicados. Para lograr esto, podemos emplear consultas SQL que hagan referencia y actualicen valores dentro de la misma tabla.

Un enfoque implica usar una declaración UPDATE con una combinación. En la siguiente consulta, unimos la tabla_datos dos veces, dándoles un alias como dt1 y dt2:

UPDATE data_table dt1, data_table dt2 
SET dt1.VALUE = dt2.VALUE 
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != '' 

Esta consulta identifica y actualiza los campos VALUE vacíos (donde dt1.VALUE está vacío) con campos no vacíos VALORES de otras filas con el mismo NOMBRE (donde dt2.VALUE no está vacío).

Como alternativa, podemos usar una subconsulta para identificar las filas con VALORES que no están vacíos y unirlas nuevamente a la tabla original. para actualizar:

UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE
                        FROM data_table
                       WHERE VALUE IS NOT NULL AND VALUE != '') t1
   SET t.VALUE = t1.VALUE
 WHERE t.ID = t1.ID
   AND t.NAME = t1.NAME

Ambas consultas darán como resultado el resultado deseado:

ID   |   NAME    |  VALUE  |
----------------------------
 1   |   Test    |  VALUE1 |
 2   |   Test2   |  VALUE2 |
 1   |   Test2   |  VALUE2 |
 4   |   Test    |  VALUE1 |
 1   |   Test3   |  VALUE3 |

Estos enfoques brindan flexibilidad en la manipulación de datos dentro de una tabla, lo que le permite actualizar valores según criterios que incluyen otras filas en la misma tabla.

Ú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