能否在 MySQL 中從另一張表向一張表中新增一列?


是的,我們可以從另一張表向一張表中新增一列。我們先建立兩個表。建立表的查詢如下−

<FirstTable>

mysql> create table FirstTable
   -> ( 
   -> UserId int,
   -> UserName varchar(20)
   -> );
Query OK, 0 rows affected (1.48 sec)

現在建立第二張表。建立第二張表的查詢如下 −

<SecondTable>

mysql> create table SecondTable
   -> (
   -> UserId int,
   -> UserAge int
   -> );
Query OK, 0 rows affected (1.57 sec)

現在,向第一張表新增 Age 列。首先,新增 Age 列,然後使用 UPDATE 命令將該 Age 列設定為 SecondTable 的 UserAge 列。查詢如下 −

mysql> ALTER TABLE FirstTable ADD COLUMN Age TINYINT UNSIGNED DEFAULT 0;
Query OK, 0 rows affected (1.53 sec)
Records: 0 Duplicates: 0 Warnings: 0

現在,此處是查詢,用於將第一張表的 Age 列更新為 SecondTable 的 UserAge 列。查詢如下 −

mysql> UPDATE FirstTable tbl1
   -> INNER JOIN SecondTable tbl2 ON tbl1.UserId = tbl2.UserId
   -> SET tbl1.Age = tbl2.UserAge;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0

現在使用 DESC 命令檢視第一張表的描述。查詢如下 −

mysql> desc FirstTable;

下面的輸出顯示我們已成功從另一張表新增一列 −

+----------+---------------------+------+-----+---------+-------+
| Field    | Type                | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| UserId   | int(11)             | YES  |     | NULL    |       |
| UserName | varchar(20)         | YES  |     | NULL    |       |
| Age      | tinyint(3) unsigned | YES  |     | 0       |       |
+----------+---------------------+------+-----+---------+-------+
3 rows in set (0.53 sec)

更新於: 2019 年 7 月 30 日

2K+ 次瀏覽

開啟你的 事業

透過完成課程來獲得認證

開始
廣告
© . All rights reserved.