tabla registro optimizar misma lentas duplicar consultas mysql

optimizar - duplicar registro mysql misma tabla



Actualizar fila con datos de otra fila en la misma tabla (5)

Aquí está mi ir:

UPDATE test as t1 INNER JOIN test as t2 ON t1.NAME = t2.NAME AND t2.value IS NOT NULL SET t1.VALUE = t2.VALUE;

EDITAR: eliminó la condición t1.id != t2.id

Tengo una mesa que se ve algo como esto

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

Estoy buscando una manera de actualizar los valores ''Test2'' y ''Prueba'' con los datos de otras filas en la columna ''VALOR'' con el mismo ''NOMBRE'' (El ID no es exclusivo aquí, una clave compuesta de la ID y NAME hacen una fila única). Por ejemplo, el resultado que estoy buscando es:

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

Si estuviera en otra tabla estaría bien, pero no sé cómo puedo hacer referencia a una fila diferente dentro de la tabla actual con el mismo valor de NAME.

Actualizar

Después de modificar la consulta manji, a continuación se muestra la consulta que utilicé para una solución funcional. ¡Gracias a todos!

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


Prueba esto:

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


Si solo necesita insertar una nueva fila con datos de otra fila,

insert into ORDER_ITEM select * from ORDER_ITEM where ITEM_NUMBER =123;


UPDATE financialyear SET firstsemfrom = dt2.firstsemfrom, firstsemto = dt2.firstsemto, secondsemfrom = dt2.secondsemfrom, secondsemto = dt2.secondsemto from financialyear dt2 WHERE financialyear.financialyearkey = 141 AND dt2.financialyearkey = 140


Update MyTable Set Value = ( Select Min( T2.Value ) From MyTable As T2 Where T2.Id <> MyTable.Id And T2.Name = MyTable.Name ) Where ( Value Is Null Or Value = '''' ) And Exists ( Select 1 From MyTable As T3 Where T3.Id <> MyTable.Id And T3.Name = MyTable.Name )