Consider the following two tables
Table A
ID | Name | Price | Size
1 aaa 10 L
2 bbb 12 L
3 ccc 15 L
4 ddd 20 XL
ID | Type
1 X
2 X
3 Y
4 Z
UPDATE A SET price = price * 1.01
WHERE size = 'L' AND id = (SELECT id FROM B WHERE type = 'X');
ORA-01427: single-row subquery returns more than one row error.
This select returns 2 rows
SELECT id FROM B WHERE type = 'X'
Result
ID | Type
1 X
2 X
Thus, use IN
if you compare value to select that returns multiple rows
UPDATE A
SET price = price * 1.01
WHERE size = 'L'
AND id IN (SELECT id FROM B WHERE type = 'X');