2012-06-23 16 views

答えて

33

あなたが意味する場合は、別のテーブルのカラムを使用して更新 1つのテーブルの列にしたい、この

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

これは、table1からtable2までのすべてのデータを挿入します。 –

+5

これが受け入れられた答えであることを考えると、私はOPが間違った質問を投稿したと仮定します。 – swasheck

39

を試してみてください、そして、ここでいくつかのオプションがあります:

  1. Aが加入:

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

    また、左結合:

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

    これは、一致しなかった値を基本的には空にします(NULLに設定します)。

  2. サブクエリ:

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

    これは左と同じですが#1内の溶液に参加します。

すべての場合において、table1の行がtable2に1個以下の行を一致させることができることが想定されることに留意されたいです。

+0

ありがとう、私はこれを試してみます。 – ix3

+0

2番目のサブクエリについては、次のエラーが表示されます。 'FROM句で更新するターゲットテーブル 'table2'を指定することはできません。 Thx –

+0

@SSHhis:いいえ、おそらくできません。そして、私はしなかった。そして、[見て、それは問題なしで動作します](http://sqlfiddle.com/#!2/f5423/1)。 –

17

別のテーブルからコピーデータのクエリは、次のとおりです。

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


だけ選択した値をコピーしたい場合は、クエリ内の句

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


を使用

+0

一度に複数の移動方法を教えていただきありがとうございます:) – JoshP

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

これはちょうど私の1週間の頭痛を解決しました。ありがとうおじいちゃん – bademba

+0

いやwierd、誰かが何か別のことを言う..これは動作します – brigitte18

0

table1からすべてのレコードを条件付きでtable2にコピーすることができます。

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

INSERT INTO table_1column-1column-2)SELECT列1、列2 table_2 FROM。

+1

この質問はすでに多くの回答を受けています。あなたの答えを他の答えと比較して、あなたのものが何かを提供しているかどうかを見てみてください**新しい**。もしそうなら、私には明らかではないので、理由を説明してください –

関連する問題