Để cập nhật giá trị trong một bảng MySQL bằng giá trị từ bảng MySQL khác, chúng ta cần sử dụng sub-query làm biểu thức trong mệnh đề SET của câu lệnh UPDATE.
Ví dụ
Trong ví dụ này, chúng ta có hai bảng 'student' và 'info'. Chúng ta sẽ cập nhật giá trị cột 'grade' của bảng 'student' bằng giá trị từ cột 'remarks' của bảng 'info'.
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
Truy vấn trên, với sự giúp đỡ của sub-query, cập nhật giá trị trong cột grade của bảng 'student'. Điều này có thể quan sát từ tập kết quả trả về bởi truy vấn MySQL sau:
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)