MySQLのあるテーブルから別の新しいテーブルにデータをコピーする方法は?


143

MySQLのテーブル間でデータをコピーしたい。

表1(既存のテーブル):

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

表2(新しいテーブル)

st_id
uid
changed
status
assign_status

データの一部のフィールドを表1から表2にコピーしたい。

これはMySQLクエリを使用して実行できますか?


1
これは1回限りの仕事ですか、それとも定期的に行う予定ですか?
jdias 2011

@@ jdias:今までは1時間の仕事です...
フェロ

@jdias明確にするために、それが1回限りの仕事ではない場合、代わりにMySQL noobは何を検討すべきですか?
Seanny123 2013

1
おそらく、データの重複を避けるためのビューです。
James Bradbury

回答:


280

これはあなたが望むことをします:

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

table1のすべての行を含める場合。それ以外の場合、table1のサブセットのみを追加する場合は、WHEREステートメントを最後に追加できます。

これがお役に立てば幸いです。


これがT-SQLで使用されているものと同じであることを確認してうれしいです。
jpierson 2016年

1
MySQLを愛するもう1つの理由は、非常に直感的です!
peceps

すべてのtable1データをコピーする場合は、@ SANDEEPをコピーする前に新しいtable2を作成する必要があります
Sachin Puneから

77

フィールドをリストしたくない場合、およびテーブルの構造が同じである場合は、次のようにすることができます。

INSERT INTO `table2` SELECT * FROM `table1`;

または、同じ構造で新しいテーブルを作成する場合:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

挿入選択の参照作成テーブル選択のリファレンス


2
なぜ[AS]角かっこで囲まれているのかAS、ここで何が行われているのか
Kasun Siyambalapitiya

3
単語がオプションであることを示します。私がドキュメントからコピーして貼り付けたので、それはそのように書かれています。それは何も追加しません。私が思うにAS、他のSQL方言で必須です。
ブライアン

22

別のテーブルからデータを簡単に取得できます。必要なだけフィールドを追加する必要があります。

mysqlクエリは次のとおりです。

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


ここで、値はtable2からtable1にコピーされます





2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]

2
このコードは質問に答えることがありますが、問題を解決する方法とそれを使用する理由を説明する方が良いでしょう。コードのみの回答は、長期的には役に立ちません。
Tobias Liefke 2015年

0

このコードを試すことができます

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
from Table_Name group by Id

0

上記のクエリは、顧客の一致する列を持つクライアントテーブルを作成した場合にのみ機能します。

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer


0

テーブルが存在する場合。あなたはtable_nameにselect * from old_taleに挿入しようとすることができます。

テーブルが存在しない場合。old_tableのようなテーブルtable_nameを作成してみてください。table_nameに挿入しますselect * from old_tale;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.