SQL INSERT INTO SELECT Statement

คำสั่ง INSERT INTO SELECT จะคัดลอกข้อมูลจากตารางหนึ่งแล้วแทรกลงในอีกตารางหนึ่ง ซึ่งจะกำหนดให้ประเภทข้อมูลในตารางแหล่งที่มาและเป้าหมายตรงกัน

หมายเหตุ:ระเบียนที่มีอยู่ในตารางเป้าหมายจะไม่ได้รับผลกระทบ

INSERT INTO SELECT Syntax

คัดลอกคอลัมน์ทั้งหมดจากตารางหนึ่งไปยังอีกตารางหนึ่ง:

INSERT INTO table2
SELECT * FROM table1
WHERE condition;

คัดลอกเฉพาะบางคอลัมน์จากตารางหนึ่งไปยังอีกตารางหนึ่ง:

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


Demo Database

ในบทเรียนนี้นี้ เราจะใช้ฐานข้อมูลที่รู้จักกันดีอย่าง Northwind

ด้านล่างนี้คือตัวเลือกจากตาราง “Customers”:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1
Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

และตัวเลือกจากตาราง “Suppliers”:

SupplierIDSupplierNameContactNameAddressCityPostal CodeCountry
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly’s HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA


ตัวอย่าง SQL INSERT INTO SELECT

ตัวอย่าง

คัดลอก “Suppliers” ลงใน “Customers” (คอลัมน์ที่ไม่เต็มไปด้วยข้อมูลจะมีค่า NULL):

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

ตัวอย่าง

คัดลอก “Suppliers” ลงใน “Customers” (กรอกทุกคอลัมน์):

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

ตัวอย่าง

คัดลอกเฉพาะ suppliers ชาวเยอรมันลงใน “Customers”:

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