Computer >> Máy Tính >  >> Lập trình >> MySQL

Chèn kết quả của một lựa chọn MySQL? Nó có khả thi không?

Bạn không cần phải sử dụng các giá trị bất cứ khi nào bạn chèn kết quả của một lựa chọn. Để chèn kết quả của lựa chọn, trước tiên chúng ta hãy tạo hai bảng.

Truy vấn bảng đầu tiên như sau -

< FirstTableDemo>
mysql> create table FirstTableDemo
   −> (
   −> StudentId int,
   −> StudentName varchar(100)
   −> );
Query OK, 0 rows affected (0.41 sec)

Bây giờ, hãy tạo bảng thứ hai và sau đó chèn các bản ghi bảng thứ hai vào bảng đầu tiên bằng lệnh INSERT SELECT.

Truy vấn để tạo bảng thứ hai -

<SecondTableDemo>

mysql> create table SecondTableDemo
   −> (
   −> Id int,
   −> Name varchar(100)
   −> );
Query OK, 0 rows affected (0.47 sec)

Chèn bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into SecondTableDemo values(1,'John');
Query OK, 1 row affected (0.14 sec)

mysql> insert into SecondTableDemo values(2,'Sam');
Query OK, 1 row affected (0.27 sec)

Bây giờ chúng ta có hai bản ghi trong bảng thứ hai. Truy vấn để hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select như sau -

mysql> select *from SecondTableDemo;

Sau đây là kết quả -

+------+------+
| Id   | Name |
+------+------+
|    1 | John |
|    2 | Sam  |
+------+------+
2 rows in set (0.00 sec)

Chèn tất cả các bản ghi của bảng thứ hai vào bảng đầu tiên bằng cách sử dụng câu lệnh CHÈN CHỌN -

mysql> insert into FirstTableDemo(StudentId,StudentName)
   −> select Id,Name from SecondTableDemo as tbl1
   −> where tbl1.Id not in (select StudentId from FirstTableDemo);
Query OK, 2 rows affected (0.57 sec)
Records: 2 Duplicates: 0 Warnings: 0

Bây giờ chúng ta đã chèn tất cả các bản ghi của bảng thứ hai vào bảng đầu tiên. Hãy để chúng tôi kiểm tra chéo bằng cách sử dụng câu lệnh chọn. Truy vấn như sau -

mysql> select *from FirstTableDemo;

Sau đây là kết quả -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         1 | John        |
|         2 | Sam         |
+-----------+-------------+
2 rows in set (0.00 sec)