Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

UPDATE 문의 SET 절에서 새 값을 할당하는 데 사용되는 하위 쿼리가 여러 행을 반환하는 경우 MySQL이 반환하는 것은 무엇입니까?

<시간/>

이 경우, 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