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

Làm cách nào để thêm giá trị tĩnh trong khi CHÈN VÀO với CHỌN trong truy vấn MySQL?

Bạn có thể thêm giá trị tĩnh khi sử dụng CHÈN VÀO CHỌN truy vấn MySQL. Viết giá trị trực tiếp trong câu lệnh select hoặc bạn có thể thêm với sự trợ giúp của biến khởi tạo giá trị.

Trường hợp 1 - Đặt giá trị trực tiếp trong câu lệnh INSERT INTO SELECT. Cú pháp như sau -

INSERT INTO yourSecondTableName(yourColumnName1,yourColumnName2,....N)
   SELECT yourColumnName1 ,yourColumnName2,.....N,yourStaticValue from yourFirstTableName;

Trường hợp 2 - Thêm bằng cách sử dụng biến. Cú pháp như sau -

SET @yourVariableName − = yourstaticValue;
   INSERT INTO yourSecondTableName(yourColumnName1,yourColumnName2,....N)
   SELECT yourColumnName1 ,yourColumnName2,.....N,@yourVariableName from yourFirstTableName;

Để hiểu cú pháp trên, bạn cần tạo hai bảng. Bảng đầu tiên sẽ có một số bản ghi trong bảng trong khi bảng thứ hai sẽ chèn bản ghi bảng đầu tiên bằng cách sử dụng lệnh insert vào select và nó sẽ thêm một giá trị tĩnh.

Hãy để chúng tôi tạo bảng đầu tiên. Truy vấn để tạo bảng như sau -

mysql> create table First_table
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> FirstValue int,
   -> SecondValue int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.56 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -

mysql> insert into First_table(FirstValue,SecondValue) values(10,14);
Query OK, 1 row affected (0.20 sec)

mysql> insert into First_table(FirstValue,SecondValue) values(12,13);
Query OK, 1 row affected (0.52 sec)

mysql> insert into First_table(FirstValue,SecondValue) values(100,110);
Query OK, 1 row affected (0.14 sec)

mysql> insert into First_table(FirstValue,SecondValue) values(45,55);
Query OK, 1 row affected (0.27 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from First_table;

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

+----+------------+-------------+
| Id | FirstValue | SecondValue |
+----+------------+-------------+
|  1 |         10 |          14 |
|  2 |         12 |          13 |
|  3 |        100 |         110 |
|  4 |         45 |          55 |
+----+------------+-------------+
4 rows in set (0.00 sec)

Hãy để chúng tôi tạo bảng thứ hai. Truy vấn để tạo bảng như sau -

mysql> create table Second_table
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Value1 int,
   -> Value2 int,
   -> Value3 int,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.81 sec)

Trong bảng trên có ba cột, trong đó hai cột sẽ nhận giá trị từ bảng đầu tiên trong khi cột thứ ba sẽ nhận giá trị trực tiếp hoặc gián tiếp.

Câu lệnh INSERT INTO SELECT như sau -

Trường hợp 1 - Thêm giá trị tĩnh vào cột thứ ba. Truy vấn như sau -

mysql> insert into Second_table(Value1,Value2,Value3)
   -> select FirstValue,SecondValue,45 from First_table;
Query OK, 4 rows affected (0.16 sec)
Records − 4 Duplicates − 0 Warnings − 0

Ở đây, tôi đã thêm 45 vào cột thứ ba. Bây giờ hãy kiểm tra tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from Second_table;

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

+----+--------+--------+--------+
| Id | Value1 | Value2 | Value3 |
+----+--------+--------+--------+
|  1 |     10 |     14 | 45     |
|  2 |     12 |     13 | 45     |
|  3 |    100 |    110 | 45     |
|  4 |     45 |     55 | 45     |
+----+--------+--------+--------+
4 rows in set (0.00 sec)

Trường hợp 2 - Khi bạn sử dụng một biến. Truy vấn như sau -

mysql> set @staticValue − = 20;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into Second_table(Value1,Value2,Value3)
   -> select FirstValue,SecondValue,@staticValue from First_table;
Query OK, 4 rows affected (0.19 sec)
Records − 4 Duplicates − 0 Warnings − 0

Thêm giá trị 20 cho cột thứ ba của tôi. Hãy để chúng tôi kiểm tra các bản ghi của bảng một lần nữa bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from Second_table;

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

+----+--------+--------+--------+
| Id | Value1 | Value2 | Value3 |
+----+--------+--------+--------+
|  1 |     10 |     14 |     20 |
|  2 |     12 |     13 |     20 |
|  3 |    100 |    110 |     20 |
|  4 |     45 |     55 |     20 |
+----+--------+--------+--------+
4 rows in set (0.00 sec)