Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Có thể thực hiện INSERT lồng nhau với SELECT trong MySQL không?

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.