I have a query where I have to join one table to another using an OR. For example

select bar.name,
foo.pkid
from foo
inner join bar on (foo.id1 = bar.id or foo.id2 = bar.id)

the problem is it results in duplicate rows because it is matching twice, cases when foo.id1 matches and again for the same foo.pkid when foo.id2 matches.

what I really want is only to return 1 record from foo if either matches.

So far, I've only found distinct to work but would prefer to avoid. I looked at a subquery using EXISTS but I also need columns to be output from bar which makes that difficult.

any suggestions?