如何使用另一个表中的值更新 MySQL 表?


我們可以使用 INNER JOIN 來更新另一個表。讓我們來建立兩個表。

建立一個表

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

插入資料

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)

顯示所有的資料

mysql> SELECT * from tblFirst;

以下是輸出的結果

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

建立第二個表

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

插入資料

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)

顯示所有的資料

mysql> SELECT * from UpdTable;

以下是輸出的結果

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)

看上面的輸出結果,可以看到最後一個名字與第一個表的資料相符。現在,我將寫一些 UPDATE 的查詢 −

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

我們將最後一個的資料更新如下 −

查詢如下

mysql> SELECT * from UpdTable;

以下是輸出的結果

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

看看我們的範例輸出結果。id 被更新,原本是 4 現在變成 1。

更新於: 30-Jul-2019

9K+ 瀏覽次數

职业生涯启航

完成课程获得认证

开始行动
广告