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ề không có hàng nào?

Trong trường hợp này, MySQL sẽ cung cấp giá trị NULL cho mệnh đề SET. Ví dụ sau sẽ chứng minh điều đó -

Ví dụ

mysql> Select * from student;

+----+---------+-----------+
| Id | Name    | grade     |
+----+---------+-----------+
| 1  | Rahul   | Good      |
| 2  | Gaurav  | Good      |
| 3  | Raman   | Excellent |
| 4  | Harshit | Average   |
| 5  | Aarav   | Best      |
| 6  | Ram     | average   |
+----+---------+-----------+

6 rows in set (0.00 sec)

mysql> select * from info;

+------+-----------+
| id   | remarks   |
+------+-----------+
| 1    | Good      |
| 2    | Good      |
| 3    | Excellent |
| 4    | Average   |
| 5    | Best      |
+------+-----------+

5 rows in set (0.00 sec)

Từ hai bảng trên, chúng ta có thể thấy bảng "sinh viên" có 6 hàng và giá trị của "lớp" là "trung bình" trong đó id =6 và bảng "thông tin" có 5 hàng. Bây giờ truy vấn con được sử dụng trong truy vấn sau sẽ không cung cấp hàng nào để cung cấp giá trị mới trong mệnh đề SET do đó nó sẽ chèn giá trị NULL. Nó có thể được kiểm tra từ đầu ra của các truy vấn sau -

mysql> UPDATE STUDENT SET grade = (SELECT remarks from info WHERE info.id = student.id) WHERE id = 6;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> Select * from student;

+----+---------+-----------+
| Id | Name    | grade     |
+----+---------+-----------+
| 1  | Rahul   | Good      |
| 2  | Gaurav  | Good      |
| 3  | Raman   | Excellent |
| 4  | Harshit | Average   |
| 5  | Aarav   | Best      |
| 6  | Ram     | NULL      |
+----+---------+-----------+

6 rows in set (0.00 sec)