ใน MySQL สามารถคัดลอกข้อมูลจากตารางหนึ่งไปยังอีกตารางได้ในคำสั่งเดียวโดยใช้ INSERT INTO ... SELECT ซึ่งมีประสิทธิภาพและสะดวกกว่า SELECT แล้ว INSERT ทีละแถว
ตัวอย่างการใช้งาน
สร้างตารางต้นทาง DemoTable1:
mysql> create table DemoTable1 (Id int, Name varchar(20), Age int); mysql> insert into DemoTable1 values(100,'Chris',24),(101,'Adam',23),(102,'John',25),(103,'Carol',26);
ข้อมูลต้นทาง:
+------+-------+------+ | Id | Name | Age | +------+-------+------+ | 100 | Chris | 24 | | 101 | Adam | 23 | | 102 | John | 25 | | 103 | Carol | 26 | +------+-------+------+
สร้างตารางปลายทาง
mysql> create table DemoTable2 (EmployeeId int, EmployeeFirstName varchar(20), EmployeeAge int);
คำสั่งคัดลอกข้อมูลเฉพาะ Id=101
mysql> insert into DemoTable2(EmployeeId,EmployeeFirstName,EmployeeAge)
-> select Id,Name,Age from DemoTable1 where Id=101;
ผลลัพธ์ในตารางปลายทาง
+------------+-------------------+-------------+ | EmployeeId | EmployeeFirstName | EmployeeAge | +------------+-------------------+-------------+ | 101 | Adam | 23 | +------------+-------------------+-------------+
คำอธิบาย:
- คอลัมน์ใน
INSERT INTOและSELECTต้องตรงกันตามลำดับและชนิดข้อมูล - สามารถใช้
WHERE,JOIN,GROUP BYในส่วน SELECT ได้ตามปกติ - ไม่ต้องระบุคอลัมน์ Auto Increment ใน INSERT (จะสร้างค่าเอง)
- ใช้
INSERT IGNORE INTO ... SELECTเพื่อข้ามข้อมูลซ้ำ (Duplicate Key)