การคัดลอกข้อมูลระหว่างคอลัมน์ในตารางต่างกันด้วย INSERT INTO SELECT
ใน MySQL สามารถคัดลอกข้อมูลจากคอลัมน์ของตารางหนึ่งไปยังคอลัมน์ของอีกตารางหนึ่ง (ในฐานข้อมูลเดียวกัน) ได้โดยใช้คำสั่ง INSERT INTO SELECT ซึ่งเป็นวิธีที่สะดวกและมีประสิทธิภาพ
ตัวอย่างการใช้งาน
ขั้นแรก ให้สร้างตารางต้นทาง DemoTable1 และเพิ่มข้อมูลตัวอย่าง:
mysql> CREATE TABLE DemoTable1 (PlayerScore INT); Query OK, 0 rows affected (0.46 sec) mysql> INSERT INTO DemoTable1 VALUES (98), (81), (76), (88); Query OK, 4 rows affected (0.15 sec)
ตรวจสอบข้อมูลในตาราง:
mysql> SELECT * FROM DemoTable1;
+-------------+ | PlayerScore | +-------------+ | 98 | | 81 | | 76 | | 88 | +-------------+ 4 rows in set (0.00 sec)
ต่อไป สร้างตารางปลายทาง DemoTable2:
mysql> CREATE TABLE DemoTable2 (Marks INT); Query OK, 0 rows affected (0.47 sec)
คัดลอกข้อมูลจาก PlayerScore ไปยัง Marks:
mysql> INSERT INTO DemoTable2 (Marks) SELECT PlayerScore FROM DemoTable1; Query OK, 4 rows affected (0.19 sec) Records: 4 Duplicates: 0 Warnings: 0
ตรวจสอบผลลัพธ์:
mysql> SELECT * FROM DemoTable2;
+-------+ | Marks | +-------+ | 98 | | 81 | | 76 | | 88 | +-------+ 4 rows in set (0.00 sec)
จุดสำคัญ
- คอลัมน์ต้นทางและปลายทางต้องมีชนิดข้อมูลที่เข้ากันได้
- สามารถเพิ่มเงื่อนไข
WHEREในส่วนSELECTเพื่อกรองข้อมูลก่อนคัดลอกได้ - วิธีนี้ใช้ได้กับตารางในฐานข้อมูลเดียวกันเท่านั้น (สำหรับตารางข้ามฐานข้อมูล ต้องระบุชื่อฐานข้อมูลด้วย)