あるテーブルから別のテーブルにデータをコピーする必要があるとします。 MySQLのテーブルから別のテーブルにデータを挿入できます。
INSERT INTO SELECTステートメントは、あるテーブルから別のテーブルにデータをコピーします。ターゲットテーブルの既存の行は影響を受けません。
構文
すべての列について、あるテーブルから別のテーブルにデータを挿入します。
INSERT INTO table2 SELECT * FROM table1;
特定の列について、あるテーブルから別のテーブルにデータを挿入します。
INSERT INTO table2 column1, column2.. SELECT column1, column2, .. FROM table1;
例
ユーザーと顧客の2つのサンプルテーブルを検討してください
Users +------+--------------+-------------+ | id | user_name | location | +------+--------------+-------------+ | 1 | Jim | London | | 4 | Rocky | US | | 7 | Dan | Italy | | 3 | Bill | France | +------+--------------+-------------+
Customers +-------+------------------+--------+------------+ | id | customer_name | age | location | +-------+------------------+--------+------------+ | 11 | John | 23 | US | | 14 | Roger | 36 | London | | 17 | Will | 29 | Spain | | 13 | Bob | 34 | Japan | +-------+------------------+--------+------------+
いくつかの列について、あるテーブルから別のテーブルにデータを挿入します
mysql> INSERT INTO users (user_name, location) SELECT customer_name, location FROM customers; +------+--------------+-------------+ | id | user_name | location | +------+--------------+-------------+ | 1 | Jim | London | | 4 | Rocky | US | | 7 | Dan | Italy | | 3 | Bill | France | | 11 | John | US | | 14 | Roger | London | | 17 | Will | Spain | | 13 | Bob | Japan | +-------+-------------+-------------+
あるテーブルから別のテーブルにいくつかの列のデータを挿入します。「米国」にいる顧客のみです。