Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คัดลอกข้อมูลจากตารางหนึ่งไปอีกตารางด้วย INSERT INTO SELECT ใน MySQL

ใน 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)