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

ย้ายแถวข้อมูลระหว่างตารางใน MySQL ด้วย INSERT INTO SELECT

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

รูปแบบคำสั่งพื้นฐาน

INSERT INTO destination_table 
SELECT * FROM source_table 
WHERE condition;

ตัวอย่างขั้นตอนต่อขั้นตอน

1. สร้างตารางต้นทางและปลายทาง

mysql> CREATE TABLE Employee (
    -> EmployeeId INT,
    -> EmployeeName VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

mysql> CREATE TABLE StudentTable (
    -> Id INT,
    -> Name VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.65 sec)

2. เพิ่มข้อมูลตัวอย่างในตาราง Employee

mysql> INSERT INTO Employee VALUES (1, 'Carol');
mysql> INSERT INTO Employee VALUES (2, 'John');
mysql> INSERT INTO Employee VALUES (3, 'Johnson');
+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 1          | Carol        |
| 2          | John         |
| 3          | Johnson      |
+------------+--------------+
3 rows in set (0.00 sec)

3. ย้ายแถวเฉพาะเงื่อนไข (EmployeeId = 3)

mysql> INSERT INTO StudentTable 
    -> SELECT * FROM Employee 
    -> WHERE EmployeeId = 3 AND EmployeeName = 'Johnson';
Query OK, 1 row affected (0.17 sec)

4. ตรวจสอบผลลัพธ์

mysql> SELECT * FROM StudentTable;
+------+---------+
| Id   | Name    |
+------+---------+
| 3    | Johnson |
+------+---------+
1 row in set (0.00 sec)

5. ย้ายข้อมูลทั้งหมด (ลบ WHERE ออก)

mysql> INSERT INTO StudentTable SELECT * FROM Employee;
Query OK, 3 rows affected (0.15 sec)
+------+---------+
| Id   | Name    |
+------+---------+
| 1    | Carol   |
| 2    | John    |
| 3    | Johnson |
+------+---------+
3 rows in set (0.00 sec)

ข้อควรระวัง

  • ลำดับและชนิดข้อมูลของคอลัมน์ในทั้งสองตารางต้องตรงกัน
  • หากตารางปลายทางมี Primary Key หรือ Unique Constraint ให้ระวังข้อมูลซ้ำ
  • ใช้ INSERT IGNORE INTO ... หากต้องการข้ามแถวที่ซ้ำ