2012-06-23 16 views
19

In MySQL, come faccio a copiare un campo con tutti i record da TABELLA1 a TABELLA2 che corrisponde a una chiave primaria, ad es .: numero DIPENDENTE?MYSQL, copia i campi selezionati da una tabella a un'altra

+0

Quali sono i campi nelle tabelle? Cosa hai provato fino ad ora? –

+0

stai provando a fare una dichiarazione SELECT INTO? Dati campione –

+0

per favore ... –

risposta

33

Prova questo

INSERT INTO `table2` (`field_name2`) SELECT `field_name` FROM `table1` 
+2

questo inserirà tutti i dati da tabella1 a tabella2. –

+5

Dato che questa è la risposta accettata, suppongo che l'OP abbia postato la domanda sbagliata. – swasheck

39

Se vuoi dire che si desidera colonna aggiornamento propria tabella utilizzando la colonna di un'altra tabella, poi qui ci sono alcune opzioni:

  1. Un join:

    UPDATE table1 AS t1 
        INNER JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo 
    SET t1.SomeColumn = t2.SomeColumn 
    

    In alternativa potrebbe essere un join di sinistra:

    UPDATE table1 AS t1 
        LEFT JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo 
    SET t1.SomeColumn = t2.SomeColumn 
    

    che sostanzialmente svuota (imposta su NULL) i valori in cui non si è verificata alcuna corrispondenza.

  2. Una subquery:

    UPDATE table1 
    SET SomeColumn = (
        SELECT SomeColumn 
        FROM table2 
        WHERE EmployeeNo = table1.EmployeeNo 
    ) 
    

    Ciò equivale a sinistra unirsi soluzione in # 1.

noti che in tutti i casi si suppone che una riga in table1 può corrispondere più di una riga nella table2.

+0

Grazie, ci provo. – ix3

+0

Per quanto riguarda la seconda sottoquery, vedo questo errore: 'Non è possibile specificare la tabella di destinazione 'table2' per l'aggiornamento nella clausola FROM' sai cosa potrebbe causare questo? Thx –

+0

@SSHThis: No, probabilmente non puoi. E non l'ho fatto. E [guarda, funziona senza problemi] (http://sqlfiddle.com/#!2/f5423/1). –

17

La query per copiare i dati da una tabella ad un altro è:

Insert into table2 (field1, field2) select field1, field2 from table1 


Se si desidera copiare solo valori selezionati, quindi utilizzare clausola where nella query

Insert into table2 (field1, field2) select field1, field2 from table1 where field1=condition 


+0

Grazie per aver mostrato come spostare più di uno alla volta :) – JoshP

3
update 
    table1 t1 
    join table2 t2 on t2.field = t1.field 
set 
    t1.field1 = t2.matchingfield 
where 
    t1.whatever = t2.whatever 
+0

questo ha appena risolto il mio mal di testa di 1 settimana. Grazie amico – bademba

+0

sì, ognuno dice qualcosa di diverso .. Questo funziona – brigitte18

0

È possibile utilizzare questo per copiare tutti i record da table1 a table2 con una condizione.

Insert into table2 select * from table1 where field1=condition 
-3

INSERTO in table_1 (column-1, column-2) SELEZIONA colonna 1, colonna 2-DA table_2;

+1

questa domanda ha ricevuto un sacco di risposte già. confronta la tua risposta con le altre risposte e prova a vedere se la tua fornisce qualcosa ** nuovo **. Se è così, spiegami perché, perché non è ovvio per me –

Problemi correlati