TOP

SQL INSERT INTO SELECT

INSERT INTO SELECT 説明

SQL ステートメント INSERT INTO SELECT は、あるテーブルからデータをコピーし、それを別のテーブルに挿入します。

INSERT INTO SELECT ステートメントでは、ソース テーブルとターゲット テーブルのデータ型が一致する必要があります。


ターゲット テーブル内の既存のレコードは残り、コピー プロセスの影響を受けません。

INSERT INTO SELECT 構文

すべての列をあるテーブルから別のテーブルにコピーします。

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

あるテーブルから別のテーブルに一部の列のみをコピーします。

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

デモデータベース

このチュートリアルでは、有名なサンプル データベース「Northwind」を使用します。

以下はテーブル「Customers」(「顧客」) のサンプルです。

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

テーブル「Suppliers」(「サプライヤー」) のサンプル:

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT 例

次の SQL クエリは、「Suppliers」 (「サプライヤー」) を「Customers」 (「顧客」) にコピーします (データが入力されていない列には NULL が含まれます)。

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

SQL クエリの別のバージョンは、「サプライヤー」テーブルから「顧客」テーブルにデータをコピーします (すべての列を埋めます)。

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

次の SQL ステートメントは、ドイツのサプライヤーのみを Customers テーブルにコピーします。

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'