Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL trả về gì nếu sub-query trong SET của UPDATE trả về nhiều hàng?

Trong trường hợp này, MySQL sẽ trả về thông báo lỗi vì chúng ta biết rằng nếu sub-query được dùng để gán giá trị mới trong mệnh đề SET của UPDATE, nó phải trả về đúng một hàng cho mỗi hàng trong bảng cập nhật khớp với mệnh đề WHERE.

Ví dụ

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)

Như thấy bảng 'info' có hai hàng với id = 5, do đó khi dùng trong sub-query nó sẽ trả về nhiều hàng và MySQL sẽ báo lỗi như sau:

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