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

คัดลอกคอลัมน์บางส่วนจากตารางหนึ่งไปอีกตารางใน MySQL

ใช้ CREATE TABLE ... SELECT เพื่อสร้างตารางใหม่พร้อมคัดลอกข้อมูลจากคอลัมน์ที่ต้องการ

ตัวอย่างการใช้งาน

1. ตารางต้นทาง (DemoTable1)

mysql> create table DemoTable1 (Id int, Name varchar(100));
mysql> insert into DemoTable1 values(10,'John'), (11,'Chris'), (12,'Robert');

2. คัดลอกเฉพาะคอลัมน์ Name ที่ Id=11

mysql> create table DemoTable2 ( 
    -> select Name from DemoTable1 where Id=11 
    -> );

ผลลัพธ์ตารางใหม่ (DemoTable2)

+-------+
| Name  |
+-------+
| Chris |
+-------+

รูปแบบต่างๆ ของ CREATE TABLE ... SELECT

-- คัดลอกทุกคอลัมน์ ทุกแถว
CREATE TABLE new_table AS SELECT * FROM old_table;

-- คัดลอกบางคอลัมน์ เปลี่ยนชื่อคอลัมน์
CREATE TABLE new_table SELECT id AS user_id, name FROM old_table;

-- คัดลอกโครงสร้างอย่างเดียว (ไม่เอาข้อมูล)
CREATE TABLE new_table LIKE old_table;
-- หรือ
CREATE TABLE new_table SELECT * FROM old_table WHERE 1=0;

ข้อจำกัด

  • ไม่คัดลอก PRIMARY KEY, AUTO_INCREMENT, INDEX, FOREIGN KEY, DEFAULT, TRIGGER
  • ต้องเพิ่ม Constraint เองหลังสร้างตาราง
  • ใช้ CREATE TABLE new_table LIKE old_table แล้วค่อย INSERT ... SELECT หากต้องการโครงสร้างเหมือนเดิม