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


要使用另一張 MySQL 表中的值來更新一張 MySQL 表中的值,我們需要在 UPDATE 語句的 SET 子句中使用子查詢作為表示式。

示例

在此示例中,我們有兩個表“學生”和“資訊”。我們將使用“資訊”表中的“備註”列中的值來更新“學生”表中的“成績”列的值。

mysql> select * from student;
+----+---------+-------+
| Id | Name    | grade |
+----+---------+-------+
| 1  | Rahul   | NULL  |
| 2  | Gaurav  | NULL  |
| 3  | Raman   | NULL  |
| 4  | Harshit | NULL  |
| 5  | Aarav   | NULL  |
+----+---------+-------+
5 rows in set (0.01 sec)

mysql> select * from info;
+------+-----------+
| id   | remarks   |
+------+-----------+
| 1    | Good      |
| 2    | Good      |
| 3    | Excellent |
| 4    | Average   |
| 5    | Best      |
+------+-----------+
5 rows in set (0.00 sec)

mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id > 0;
Query OK, 5 rows affected (0.08 sec)
Rows matched: 5 Changed: 5 Warnings: 0

上面的查詢利用子查詢更新了“學生”表中成績列的值。它可以透過下列 MySQL 查詢返回的結果集進行觀察。

mysql> Select * from student;
+----+---------+-----------+
| Id | Name    | grade     |
+----+---------+-----------+
| 1  | Rahul   | Good      |
| 2  | Gaurav  | Good      |
| 3  | Raman   | Excellent |
| 4  | Harshit | Average   |
| 5  | Aarav   | Best      |
+----+---------+-----------+
5 rows in set (0.00 sec)

更新於: 20-6-2020

392 次檢視

開啟你的 職業生涯

完成課程以獲得認證

開始學習
廣告
© . All rights reserved.