2011-01-21 15 views
6

Tengo la tabla pref que tiene el valor de la columna. Este valor tiene texto tipo. Quiero copiar el valor del campo de valor de la fila con ID 7 en el campo de valor de la fila con ID 1. ¿Pueden ayudarme cómo hacerlo? Sé MS SQL, pero soy nuevo en mySQL.Cómo copiar el valor de la columna de texto de una fila a otra fila en mySQL

create table pref 
(
    id int, 
    value text 
) 
+0

¿Has probado el SQL que escribirías para MS SQL todavía? ¿Qué falló? – sarnold

Respuesta

14

En MySQL no puede usar una subselección de la misma tabla que está actualizando, pero puede usar una combinación.

UPDATE pref AS target 
LEFT JOIN pref AS source ON source.id = 7 
     SET target.value = source.value 
    WHERE target.id = 1; 
+0

Esto funcionó, gracias. – mohang

+1

Gracias. Quería actualizar varios campos al fusionar registros duplicados y esta respuesta se adaptó fácilmente a mis necesidades. –

2
UPDATE 
    pref 
SET 
    value = (SELECT value WHERE id = 7) 
WHERE 
    id = 1 
0

En mi caso, yo estaba tratando de copiar un valor cifrado de una fila en un campo vacío en otra fila en la misma mesa. En este caso, necesitaba copiar el PIN de John en el PIN de Jane.

@mohang lo tiene todo. Aquí está mi adaptación :)

name pin 

john sdhjduwhdowodw7d87e838g83g8g3of... 
jane  

    //copy from field with value into empty field 

UPDATE my_table AS target 
LEFT JOIN my_table AS source ON source.pin != "" 
SET target.pin = source.pin 
WHERE target.pin = ""; 

    // Hurray, it works! 

name pin 

john sdhjduwhdowodw7d87e838g83g8g3of... 
jane sdhjduwhdowodw7d87e838g83g8g3of... 
Cuestiones relacionadas