Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL คืนค่าอะไรเมื่อ Sub-query ใน SET ของ UPDATE ไม่คืนแถวใดๆ

ในกรณีนี้ MySQL จะส่งค่า NULL ให้กับเงื่อนไข SET ตัวอย่างด้านล่างจะสาธิต:

ตัวอย่าง

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)

ตาราง student มี 6 แถว ค่า grade เป็น average ที่ id = 6 ส่วนตาราง info มี 5 แถว ตอนนี้ sub-query ในคำสั่งต่อไปจะไม่คืนแถวใดๆ ให้ SET จึงจะใส่ค่า NULL สามารถตรวจสอบได้จากผลลัพธ์:

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)