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

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

ในกรณีนี้ MySQL จะคืนข้อผิดพลาด เพราะ sub-query ที่ใช้ให้ค่าใหม่ใน SET ของ UPDATE ต้องคืนแถวเดียวเท่านั้นสำหรับแต่ละแถวในตารางที่อัปเดตซึ่งตรงตาม WHERE

ตัวอย่าง

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)

ตาราง info มี 2 แถวที่ id = 5 เมื่อใช้ใน sub-query จะคืนหลายแถว MySQL จึงคืนข้อผิดพลาด:

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