如何使用另一个表中的值更新 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。
广告