Это выглядит как left join
:
select t.*, tt.column2 as column4
from table1 t left join
table1 tt
on t.column3 = tt.column1;
РЕДАКТИРОВАТЬ:
Если вы хотите установить значение, вы можете использовать update
:
update table1 t
set column4 = (select tt.column2 from table1 tt where t.column3 = tt.column1)
where exists (select 1 from table1 tt where t.column3 = tt.column1);
Однако это кажется глупым. Вы можете легко получить значение в таблице, используя явный join
или скрыв логики c в представлении.