Sử dụng INSERT INTO ... SELECT để sao chép dữ liệu từ bảng này sang bảng khác.
Ví dụ minh họa
Tạo bảng nguồn:
mysql> CREATE TABLE DemoTable1 (
Id INT, Name VARCHAR(20), Age INT
);
Chèn dữ liệu:
mysql> INSERT INTO DemoTable1 VALUES(100, 'Chris', 24), (101, 'Adam', 23), (102, 'John', 25), (103, 'Carol', 26);
Tạo bảng đích (cấu trúc khác tên cột):
mysql> CREATE TABLE DemoTable2 (
EmployeeId INT, EmployeeFirstName VARCHAR(20), EmployeeAge INT
);
Sao chép hàng có Id = 101 từ bảng 1 sang bảng 2 (map cột):
mysql> INSERT INTO DemoTable2(EmployeeId, EmployeeFirstName, EmployeeAge)
SELECT Id, Name, Age FROM DemoTable1 WHERE Id = 101;
Kết quả bảng đích:
mysql> SELECT * FROM DemoTable2;
+------------+-------------------+-------------+ | EmployeeId | EmployeeFirstName | EmployeeAge | +------------+-------------------+-------------+ | 101 | Adam | 23 | +------------+-------------------+-------------+
Lưu ý:
- Số cột và kiểu dữ liệu trong
SELECTphải khớp với danh sách cộtINSERT. - Có thể dùng
SELECT *nếu cấu trúc y hệt. INSERT IGNOREhoặcON DUPLICATE KEY UPDATEđể xử lý trùng khóa.