NO , you simply cannot specify source = source + values(source);
because the source table is blahnot included in the selectuse of the alias will not be fixed.
Workaround will use left join
insert into blah (user_id, prefix, email_id, field, source)
select
ab1.user_id, substring(ab1.name, 1, 3), ab1.contact_email_id, 2,
if(ab2.source, ab1.source+ab2.source, ab1.source)
from
address_book ab1
left join
blah1 as ab2
on
ab1.user_id=ab2.user_id
on duplicate key
update source = values(source);
beware of relationships 1:N
source
share