Home >> FAQs/Tutorials >> SQL Server FAQ
SQL Server FAQ - UPDATE Subquery Returning Multiple Rows
(Continued from previous topic...)
What Happens If the UPDATE Subquery Returns Multiple Rows?
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, SQL Server
will give you an error message. To test this out, you can try the following tutorial exercise:
-- insert two rows to fyi_rates
INSERT INTO fyi_rates VALUES (0, 'Number 1')
INSERT INTO fyi_rates VALUES (0, 'Number 2')
-- make sure there are 2 match rows
SELECT * FROM fyi_rates WHERE id = 0
0 Number 1
0 Number 2
-- update with subquery that returns 2 rows
UPDATE fyi_links SET notes = (
SELECT comment FROM fyi_rates
WHERE fyi_rates.id = fyi_links.id
WHERE id = 0
Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted
when the subquery follows =, !=, <, <= , >, >= or when
the subquery is used as an expression.
The statement has been terminated.
It is clear that we are using subquery as an expression, and it must return 0 or 1 row.
Otherwise, we will get an error.
(Continued on next topic...)
- What Are DML (Data Manipulation Language) Statements?
- How To Create a Testing Table with Test Data?
- How To Insert a New Row into a Table with "INSERT INTO" Statements?
- How To Use Column Default Values in INSERT Statements?
- How to provide column names in INSERT Statements?
- What Happens If You Insert a Duplicate Key for the Primary Key Column?
- How To Insert Multiple Rows with One INSERT Statement?
- How To Update Values in a Table with UPDATE Statements?
- How To Update Multiple Rows with One UPDATE Statement?
- How to use old values to define new values in UPDATE statements?
- Is the Order of Columns in the SET Clause Important?
- How To Use Values from Other Tables in UPDATE Statements?
- What Happens If the UPDATE Subquery Returns No Rows?
- What Happens If the UPDATE Subquery Returns Multiple Rows?
- How To Delete an Existing Row with DELETE Statements?
- How To Delete Multiple Rows with One DELETE Statement?
- How To Delete All Rows with DELETE Statements?
- How To Delete All Rows with TRUNCATE TABLE Statement?