Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL trả về điều gì nếu truy vấn phụ, được sử dụng để gán giá trị mới trong mệnh đề SET của câu lệnh UPDATE, trả về nhiều hàng?

Trong trường hợp này, MySQL sẽ trả về một thông báo lỗi vì chúng ta biết rằng nếu truy vấn con được sử dụng để gán giá trị mới trong mệnh đề SET của câu lệnh UPDATE thì nó phải trả về chính xác 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ư chúng ta có thể thấy ở trên, bảng ‘thông tin’ có hai hàng với id =5 do đó khi chúng ta sử dụng nó trong truy vấn phụ, nó sẽ trả về nhiều hàng và do đó, MySQL sẽ trả về một thông 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