2012-01-25 15 views
110

Come posso fare una copia dei valori da una colonna all'altra? Ho:Copia valori da una colonna all'altra nella stessa tabella

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

voglio avere:

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

Cosa query MySQL dovrei avere?

risposta

249
UPDATE `table` SET test=number 
+14

È una di quelle rare occasioni in cui gli sviluppatori hanno pensato come laici. – Zaxter

+3

Mostra solo quanto è scarsa la comprensione dell'aggiornamento. –

+3

Attenzione se non si ha familiarità con il comando 'update' ... Senza una clausola WHERE **, questo comando eseguirà l'aggiornamento di tutti i record ** ** nella tabella. – gmo

8

provare questo:

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

non è 'list' è il nome db? –

+2

forse. Penso che sia un errore di battitura.La lista –

+0

è

user2439124

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

si può anche fare tutti i cambiamenti matematici del processo o utilizzare funzioni di MySQL per modificare i valori.

-6

si può fare con la procedura anche così ho una procedura per questo

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

Sembra che il principio KISS sia semplicemente morto ... – NemoStein

+0

Qui KISS sta per "Keep it simple, stupid" – nitinr708

1

prova seguente:

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

crea copia di tutti i valori da "numero" e incollarlo " test"

1

in seguito ha lavorato per me ..

  1. Assicurarsi di non utilizzare la modalità provvisoria nell'applicazione di modifica delle query. Se lo sei, disabilitalo!
  2. Quindi eseguite seguente comando SQL

per un tavolo dire, 'test_update_cmd', fonte valore di colonna col2, bersaglio valore di colonna col1 e condizione colonna col3: -

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

In bocca al lupo!

1

ATTENTI: ordine di colonne aggiornamento è fondamentale

BUONA: Quello che voglio risparmiare valore esistente di Stato per PrevStatus

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

BAD: Stato & PrevStatus sia finire come 44

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