MySQL 如何使用另一个MySQL表中的值更新一个MySQL表中的值?
为了使用另一个MySQL表中的值来更新一个MySQL表中的值,我们需要在UPDATE语句的SET子句中使用子查询作为一个表达式。
阅读更多:MySQL 教程
示例
在本示例中,我们有两个数据表‘student’和‘info’。我们将使用‘info’表中‘remarks’列的值来更新‘student’表中‘grade’列的值。
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
以上查询使用子查询的帮助来更新‘student’表中‘grade’列中的值。以下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)
极客教程