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

Cập nhật một bảng MySQL với các giá trị từ một bảng khác?

Chúng tôi có thể cập nhật một bảng khác với sự trợ giúp của phép tham gia bên trong. Hãy để chúng tôi tạo hai bảng.

Tạo bảng

mysql> CREATE table tblFirst
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.48 sec)

Chèn bản ghi

mysql> INSERT into tblFirst values(1,'John');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into tblFirst values(2,'Bob');
Query OK, 1 row affected (0.26 sec)

mysql> INSERT into tblFirst values(3,'David');
Query OK, 1 row affected (0.20 sec)

Hiển thị tất cả các bản ghi

mysql> SELECT * from tblFirst;

Sau đây là kết quả

+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | Bob   |
| 3    | David |
+------+-------+
3 rows in set (0.00 sec)

Tạo bảng thứ hai

mysql> CREATE table UpdTable
   -> (
   -> IncId int auto_increment,
   -> primary key(IncId),
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.57 sec)

Chèn bản ghi

mysql> INSERT into UpdTable(id,name) values(1,'Taylor');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into UpdTable(id,name) values(2,'jason');
Query OK, 1 row affected (0.24 sec)

mysql> INSERT into UpdTable(id,name) values(3,'carol');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT into UpdTable(id,name) values(4,'john');
Query OK, 1 row affected (0.16 sec)

Hiển thị tất cả các bản ghi

mysql> SELECT * from UpdTable;

Sau đây là kết quả

mysql> SELECT *from UpdTable;
+-------+------+--------+
| IncId | id   | name   |
+-------+------+--------+
| 1     | 1    | Taylor |
| 2     | 2    | jason  |
| 3     | 3    | carol  |
| 4     | 4    | john   |
+-------+------+--------+
4 rows in set (0.00 sec)

Nhìn vào kết quả ở trên, họ trùng khớp với bản ghi bảng đầu tiên. Bây giờ, tôi sẽ viết truy vấn cho CẬP NHẬT -

mysql> UPDATE UpdTable
   -> inner join tblFirst ON (UpdTable.name = tblFirst.name)
   -> SET UpdTable.id = tblFirst.id;
Query OK, 1 row affected (0.19 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Chúng tôi đã cập nhật bản ghi cuối cùng như sau -

Truy vấn là

mysql> SELECT * from UpdTable;

Sau đây là kết quả

+-------+------+--------+
| IncId | id   | name   |
+-------+------+--------+
| 1     | 1    | Taylor |
| 2     | 2    | jason  |
| 3     | 3    | carol  |
| 4     | 1    | john   |
+-------+------+--------+
4 rows in set (0.00 sec)

Nhìn vào đầu ra mẫu. Id được cập nhật, là 4 nhưng bây giờ là 1.