What Happens If the UPDATE Subquery Returns Multiple Rows

Q

What Happens If the UPDATE Subquery Returns Multiple Rows? - MySQL FAQs - Understanding SQL INSERT, UPDATE and DELETE Statements

✍: FYIcenter.com

A

If a subquery is used in a UPDATE statement, it must return exactly one row for each row in the update table that matches the WHERE clause. If it returns multiple rows, MySQL server will give you an error message. To test this out, you can try the following tutorial exercise:

mysql> INSERT INTO fyi_rates VALUES (0, 'Number 1');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO fyi_rates VALUES (0, 'Number 2');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM fyi_rates WHERE id = 0;
+------+----------+
| id   | comment  |
+------+----------+
|    0 | Number 1 |
|    0 | Number 2 |
+------+----------+
2 rows in set (0.00 sec)

mysql> UPDATE fyi_links SET notes = (
    SELECT comment FROM fyi_rates 
    WHERE fyi_rates.id = fyi_links.id
   ) 
   WHERE id = 0;
ERROR 1242 (21000): Subquery returns more than 1 row

2007-05-11, 4995👍, 0💬