MySQL cho phép sử dụng câu lệnh INSERT ... SELECT để sao chép dữ liệu từ bảng này sang bảng khác trong một truy vấn duy nhất.
Tạo bảng nguồn (DemoTable1)
mysql> CREATE TABLE DemoTable1 (
-> StudentId INT,
-> StudentName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.64 sec)
mysql> INSERT INTO DemoTable1 VALUES(10, 'John'); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable1 VALUES(11, 'Chris'); Query OK, 1 row affected (0.15 sec)
Tạo bảng đích (DemoTable2)
mysql> CREATE TABLE DemoTable2 (
-> CustomerId INT,
-> CustomerName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.82 sec)
Sao chép dữ liệu có điều kiện
mysql> INSERT INTO DemoTable2(CustomerId, CustomerName)
-> SELECT StudentId, StudentName FROM DemoTable1 WHERE StudentId = 11;
Query OK, 1 row affected (0.20 sec)
Kiểm tra bảng đích
mysql> SELECT * FROM DemoTable2;
+------------+--------------+ | CustomerId | CustomerName | +------------+--------------+ | 11 | Chris | +------------+--------------+ 1 row in set (0.00 sec)
Ứng dụng: Cú pháp này hữu ích cho việc sao lưu dữ liệu, di chuyển dữ liệu giữa các bảng có cấu trúc khác nhau, hoặc tạo bảng báo cáo từ dữ liệu gốc.