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

MySQL ใดส่งคืนหากแบบสอบถามย่อยใช้เพื่อกำหนดค่าใหม่ในส่วนคำสั่ง 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)

จากสองตารางข้างต้น เราจะเห็นตาราง 'นักเรียน' มี 6 แถว และค่าของ 'เกรด' คือ 'เฉลี่ย' โดยที่ id =6 และตาราง 'ข้อมูล' มี 5 แถว ตอนนี้แบบสอบถามย่อยที่ใช้ในแบบสอบถามต่อไปนี้จะไม่มีแถวให้ค่าใหม่ในส่วนคำสั่ง 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)