2012-01-25 14 views
110

¿Cómo puedo hacer una copia de valores de una columna a otra? Tengo:Copie valores de una columna a otra en la misma tabla

Database name: list 
number | test 
123456 | somedata 
123486 | somedata1 
232344 | 34 

quiero tener:

Database name: list 
number | test 
123456 | 123456 
123486 | 123486 
232344 | 232344 

Qué consulta MySQL debería tener?

Respuesta

249
UPDATE `table` SET test=number 
+14

Es una de esas raras ocasiones en que los desarrolladores han pensado como legos. – Zaxter

+3

Simplemente muestra cuán pobre es la comprensión de la actualización. –

+3

Tenga cuidado si no está familiarizado con el 'comando de actualización' ... Sin una cláusula ** WHERE **, este comando' actualizará' ** TODOS ** registros en la tabla. – gmo

8

probar esto:

update `list` 
set `test` = `number` 
+0

no es 'list' es el nombre de db? –

+2

tal vez. Creo que es un error tipográfico –

+0

lista es

user2439124

23
UPDATE `table_name` SET `test` = `number` 

También se puede hacer cualquier cambio en el proceso de matemáticas o utilizar funciones de MySQL para modificar los valores.

-6

puede hacerlo con el Procedimiento también, así que tengo un procedimiento para este

DELIMITER $$ 
CREATE PROCEDURE copyTo() 
     BEGIN 
       DECLARE x INT; 
      DECLARE str varchar(45); 
       SET x = 1; 
      set str = ''; 
       WHILE x < 5 DO 
       set str = (select source_col from emp where id=x); 
      update emp set target_col =str where id=x;  
      SET x = x + 1; 
       END WHILE; 

     END$$ 
    DELIMITER ; 
+11

Parece que el principio KISS es simple muerto ... – NemoStein

+0

Aquí KISS significa "Mantenerlo simple, estúpido" – nitinr708

1

intento siguiente:

UPDATE `list` SET `test` = `number` 

crea copia de todos los valores de "número" y pegarlo en " prueba"

1

a continuación trabajó para mí ..

  1. Asegúrese de no estar utilizando Safe-mode en su aplicación de editor de consultas. Si es así, deshabilítelo!
  2. A continuación, ejecute siguiente comando SQL

para una tabla decir, 'test_update_cmd', fuente de valor de la columna col2, meta valor de col1 columna y col3 columna de condición: -

UPDATE test_update_cmd SET col1=col2 WHERE col3='value'; 

¡Buena suerte!

1

TEN CUIDADO: Orden de columnas de actualización es crítica

BUENA: Lo que quiero ahorra valor existente del Estado a PrevStatus

UPDATE Collections SET PrevStatus=Status, Status=44 WHERE ID=1487496; 

BAD: Estado & PrevStatus tanto terminan como 44

UPDATE Collections SET Status=44, PrevStatus=Status WHERE ID=1487496; 
Cuestiones relacionadas