2012-06-23 6 views
19

W MySQL, Jak skopiować POLA ze wszystkimi rekordami z TABELA1 do TABELA2, który odpowiada kluczowi podstawowemu, tj: nr PRACOWNIKA?MYSQL, Skopiuj wybrane pola z jednej tabeli do drugiej

+0

Jakie są pola w tabelach? Czego spróbowałeś do tej pory? –

+0

czy próbujesz wykonać instrukcję SELECT INTO? –

+0

przykładowe dane proszę ... –

Odpowiedz

33

Spróbuj

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

spowoduje to wstawienie wszystkich danych z tabeli1 do tabeli2. –

+5

Biorąc pod uwagę, że jest to zaakceptowana odpowiedź, zakładam, że PO opublikował nieprawidłowe pytanie. – swasheck

39

Jeśli masz na myśli chcesz kolumnie aktualizacja jednym stole Korzystanie kolumny innej tabeli, a następnie Oto kilka opcji:

  1. JOIN:

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

    Alternatywnie może to być lewostronne połączenie:

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

    , który w zasadzie opróżniłby (ustawił na wartość NULL) wartości, w których nie wystąpiło dopasowanie.

  2. Podzapytanie:

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

    Jest to równoważne z lewej strony przyłączenia rozwiązanie # 1.

Należy zauważyć, że we wszystkich przypadkach zakłada się, że rząd w table1 może się równać nie więcej niż jeden wiersz w table2.

+0

Dzięki temu wypróbuję to. – ix3

+0

Jeśli chodzi o drugą podkwerendę, widzę ten błąd: 'Nie możesz określić tabeli docelowej 'table2' dla aktualizacji w klauzuli FROM" Czy wiesz, co może to spowodować? Thx –

+0

@SSHThis: Nie, prawdopodobnie nie możesz. I nie zrobiłem tego. I [spójrz, działa bez problemów] (http://sqlfiddle.com/#!2/f5423/1). –

17

Zapytanie do kopiowania danych z jednej tabeli do drugiej wynosi:

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


Jeśli chcesz skopiować tylko wybrane wartości, a następnie użyć klauzuli WHERE w zapytaniu

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


+0

Dzięki za pokazanie, jak przenosić więcej niż jeden naraz :) – JoshP

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

to właśnie rozwiązało mój 1 tydzień ból głowy. Dziękuję kumplu – bademba

+0

tak, dziwne, każdy mówi coś innego .. To działa – brigitte18

0

Możesz użyć tego do skopiowania wszystkich rekordów z table1 do table2 z warunkiem.

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

WKŁADKA DO table_1 (column-1, column-2) SELECT kolumna 1, kolumna 2 od table_2;

+1

to pytanie otrzymało już wiele odpowiedzi. proszę porównać swoją odpowiedź z pozostałymi odpowiedziami i spróbuj sprawdzić, czy dostarczysz cokolwiek ** nowego **. Jeśli tak, proszę wyjaśnić, dlaczego, ponieważ nie jest to dla mnie oczywiste –