Câu trả lời
Có. MySQL hỗ trợ INSERT ... SELECT để chèn dữ liệu từ một bảng vào bảng khác, có thể kèm điều kiện WHERE.
Cú pháp
insert into yourTableName2(col1, col2, ...) select col1, col2, ... from yourTableName1 where yourCondition;
Ví dụ minh họa
1. Tạo bảng nguồn
mysql> create table DemoTable1 (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40)
);
Query OK, 0 rows affected (0.88 sec)
2. Chèn dữ liệu bảng nguồn
mysql> insert into DemoTable1(Name) values('Chris');
mysql> insert into DemoTable1(Name) values('David');
mysql> insert into DemoTable1(Name) values('Bob');
3. Tạo bảng đích
mysql> create table DemoTable2 (
ClientId int,
ClientFirstName varchar(20)
);
Query OK, 0 rows affected (0.60 sec)
4. Thực hiện INSERT ... SELECT
mysql> insert into DemoTable2(ClientId, ClientFirstName)
select Id, Name from DemoTable1 where Id != 2;
Query OK, 2 rows affected (0.17 sec)
5. Kết quả bảng đích
mysql> select * from DemoTable2;
+----------+-----------------+ | ClientId | ClientFirstName | +----------+-----------------+ | 1 | Chris | | 3 | Bob | +----------+-----------------+ 2 rows in set (0.00 sec)
Lưu ý: Số cột và kiểu dữ liệu của SELECT phải khớp với danh sách cột trong INSERT.