Sử dụng INSERT INTO ... SELECT để sao chép dữ liệu từ cột của bảng này sang bảng khác trong một câu lệnh.
Bảng nguồn
mysql> CREATE TABLE DemoTable1(
Name VARCHAR(100),
Gender ENUM('MALE','FEMALE')
);
Query OK, 0 rows affected (0.50 sec)
mysql> INSERT INTO DemoTable1 VALUES('Chris','Male'), ('Emma','Female');
Query OK, 2 rows affected
Bảng đích
mysql> CREATE TABLE DemoTable2(EmployeeGender VARCHAR(100)); Query OK, 0 rows affected (0.47 sec)
Sao chép cột Gender sang bảng 2
mysql> INSERT INTO DemoTable2(EmployeeGender) SELECT Gender FROM DemoTable1; Query OK, 2 rows affected (0.15 sec)
Kết quả:
+----------------+ | EmployeeGender | +----------------+ | MALE | | FEMALE | +----------------+
Ưu điểm: Thực hiện trong 1 câu lệnh, atomic, hiệu năng tốt hơn so với SELECT rồi INSERT vòng lặp ở ứng dụng.
Mở rộng: Sao chép nhiều cột: INSERT INTO table2(colA, colB) SELECT colX, colY FROM table1 WHERE condition.