다른 MySQL 테이블의 값을 사용하여 한 MySQL 테이블의 값을 업데이트하려면 UPDATE 문의 SET 절에서 표현식으로 하위 쿼리를 사용해야 합니다.
예시
이 예에서는 '학생'과 '정보'라는 두 개의 테이블이 있습니다. '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)