ภาพรวม
ใช้คำสั่ง INSERT INTO ... SELECT ... เพื่อคัดลอกข้อมูลจากตารางต้นทางไปยังตารางปลายทางได้ในคำสั่งเดียว
ขั้นตอน
- สร้าง
DemoTable1มีId INT,FirstName VARCHAR(20) - แทรกข้อมูล 2 แถว
- สร้าง
DemoTable2มีEmployeeId INT,EmployeeName VARCHAR(20) - คัดลอกข้อมูลด้วย
INSERT INTO DemoTable2 (EmployeeId, EmployeeName) SELECT Id, FirstName FROM DemoTable1;
โค้ด SQL
CREATE TABLE DemoTable1 (
Id INT,
FirstName VARCHAR(20)
);
INSERT INTO DemoTable1 VALUES (101, 'Adam');
INSERT INTO DemoTable1 VALUES (102, 'John');
SELECT * FROM DemoTable1;
CREATE TABLE DemoTable2 (
EmployeeId INT,
EmployeeName VARCHAR(20)
);
INSERT INTO DemoTable2 (EmployeeId, EmployeeName)
SELECT Id, FirstName FROM DemoTable1;
SELECT * FROM DemoTable2;
ผลลัพธ์
+------+-----------+ | Id | FirstName | +------+-----------+ | 101 | Adam | | 102 | John | +------+-----------+ +------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 101 | Adam | | 102 | John | +------------+--------------+
สรุป
- คอลัมน์ใน SELECT ต้องตรงลำดับและชนิดข้อมูลกับคอลัมน์ปลายทาง
- สามารถเพิ่ม
WHEREกรองข้อมูลได้ - หากตารางปลายทางมี AUTO_INCREMENT ให้ละคอลัมน์นั้นใน INSERT