Your title "self join" suggests that you want to do this:
select t1.field1, t1.field2, t2.field1, t2.field2, t2.field3
from table t1
join table t2 on t1.field2 = t2.field3 and t1.field1 != t2.field1;
However, what if there were 3 or more records with same field3 value?
A more general solution is:
select *
from table
where field3 in
( select field3
from table
group by field3
having count(*) > 1
);