Question: I am trying to update a column based on another column in the same table (student table) and a column
from another table (school table)

Code is:

```
update student_table
set student_code =
(select l.student_code
from school_table l, student_table n
where l.school = n.schoolname)

```

I get the following error

ORA - 01427 Single-row subquery returns more than one row

Any help would be appreciated.

Answer: 
We all know exactly what the error says. SET only expects one value per column to be set. What we want to achieve is Update all rows for a given column using values from another table's column.

Now here's the solution:

```
BEGIN
For i in (select col_X, col_Y from table1) 
LOOP
Update table2 set col1 = i.col_X where col2 = i.col_Y;
END LOOP;
END;

```

That's how exactly you run it on SQLDeveloper worksheet. They say it's slow but that's the only solution that worked for me on this case.
Try to add and rownum=1 to your subquery conditions if you DO NOT care about the value from the list or DO sure that they are the same.