이 경우, MySQL은 하위 쿼리가 UPDATE 문의 SET 절에 새 값을 할당하는 데 사용되는 경우 WHERE 절과 일치하는 업데이트 테이블의 각 행에 대해 정확히 하나의 행을 반환해야 한다는 것을 알고 있기 때문에 오류 메시지를 반환합니다. .
예시
mysql> insert into info(id, remarks) values(5,'average'); Query OK, 1 row affected (0.06 sec) mysql> select * from info; +------+-----------+ | id | remarks | +------+-----------+ | 1 | Good | | 2 | Good | | 3 | Excellent | | 4 | Average | | 5 | Best | | 5 | average | +------+-----------+ 6 rows in set (0.00 sec)
위에서 볼 수 있듯이 'info' 테이블에는 id =5인 두 개의 행이 있으므로 하위 쿼리에서 사용할 때 여러 행을 반환하고 이 때문에 MySQL은 다음과 같은 오류 메시지를 반환합니다. -
mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id = 5; ERROR 1242 (21000): Subquery returns more than 1 row