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.
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